Compartir a través de


sql_variant (Transact-SQL)

Tipo de datos que almacena valores de varios tipos de datos aceptados en SQL Server 2005, excepto text, ntext, image, timestamp y sql_variant.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sql_variant

Notas

sql_variantpuede utilizarse en columnas, parámetros, variables y valores devueltos de funciones definidas por el usuario. sql_variant permite que estos objetos de base de datos admitan valores de otros tipos de datos.

Una columna de tipo sql_variant puede contener filas de tipos de datos diferentes. Por ejemplo, una columna definida como sql_variant puede almacenar valores int, binary y char. En la tabla siguiente se muestran los tipos de valores que no se pueden almacenar mediante sql_variant:

varchar(max)

  • varbinary(max)

nvarchar(max)

xml

  • text

ntext

  • image

timestamp

  • sql_variant

Tipos definidos por el usuario

sql_variant puede tener una longitud máxima de 8.016 bytes. Esto incluye la información y el valor de tipo base. La longitud máxima del tipo base real es 8.000 bytes.

Un tipo de datos sql_variant debe convertirse en su valor de tipo de datos base antes de poder tomar parte en operaciones como la adición y la sustracción.

Se puede asignar un valor predeterminado a sql_variant. Este tipo de datos también puede incluir NULL como valor subyacente, aunque estos valores NULL no dispondrán de un tipo base asociado. Además, sql_variant no puede tener otro sql_variant como su tipo base.

Una clave única, primaria o externa puede incluir columnas del tipo sql_variant, aunque la longitud total de los valores de datos que integran la clave de una fila determinada no debe superar la longitud máxima de un índice. Ésta es de 900 bytes.

Una tabla puede constar de cualquier número de columnas sql_variant.

No se puede utilizar sql_variant en CONTAINSTABLE y FREETEXTTABLE.

ODBC no es totalmente compatible con sql_variant. Por tanto, las columnas de consultas sql_variant se devuelven como datos binarios con el proveedor OLE DB de Microsoft para ODBC (MSDASQL). Por ejemplo, una columna sql_variant que contiene los datos de la cadena de caracteres 'PS2091' se devuelve como 0x505332303931.

Comparar los valores de sql_variant

El tipo de datos sql_variant pertenece a la parte superior de la lista de jerarquías de tipos de datos para conversión. En las comparaciones de sql_variant, el orden de la jerarquía del tipo de datos SQL Server se agrupa en familias de tipos de datos.

Jerarquía de tipo de datos Familia de tipo de datos

sql_variant

sql_variant

datetime

Fecha y hora

smalldatetime

Fecha y hora

float

Valores numéricos aproximados

real

Valores numéricos aproximados

decimal

Valores numéricos exactos

money

Valores numéricos exactos

smallmoney

Valores numéricos exactos

bigint

Valores numéricos exactos

int

Valores numéricos exactos

smallint

Valores numéricos exactos

tinyint

Valores numéricos exactos

bit

Valores numéricos exactos

nvarchar

Unicode

nchar

Unicode

varchar

Unicode

char

Unicode

varbinary

Binario

binary

Binario

uniqueidentifier

Uniqueidentifier

Las comparaciones de sql_variant siguen estas reglas:

  • Cuando se comparan valores sql_variant de tipos de datos base distintos y los tipos de datos base están en familias de tipos de datos diferentes, el valor cuya familia de tipo de datos ocupa una posición superior en el gráfico de jerarquía se considera el mayor de los dos valores.
  • Cuando se comparan valores sql_variant de tipos de datos base distintos y los tipos de datos base están en la misma familia de tipos de datos, el valor cuyo tipo de datos base ocupa una posición inferior en el gráfico de jerarquía se convierte implícitamente al otro tipo de datos y, a continuación, se realiza la comparación.
  • Cuando se comparan valores de sql_variant de tipos de datos char, varchar, nchar o nvarchar, se evalúan basándose en el criterio siguiente: LCID, versión de LCID, indicadores de comparación e Id. de orden. Cada uno de estos criterios se compara como valores enteros y en el orden indicado.

Vea también

Referencia

CAST y CONVERT (Transact-SQL)

Otros recursos

Usar datos sql_variant

Ayuda e información

Obtener ayuda sobre SQL Server 2005