SQL_VARIANT_PROPERTY (Transact-SQL)
Devuelve el tipo de datos base y otra información sobre un valor sql_variant.
Sintaxis
SQL_VARIANT_PROPERTY ( expression , property )
Argumentos
expression
Es una expresión de tipo sql_variant.property
Contiene el nombre de la propiedad sql_variant para la que se proporciona la información. property es de tipo varchar(128) y puede tener cualquiera de los valores siguientes.Valor
Descripción
Tipo base de sql_variant devuelto
BaseType
Tipo de datos de SQL Server, como:
bigint
binary
char
date
datetime
datetime2
datetimeoffset
decimal
float
int
money
nchar
numeric
nvarchar
real
smalldatetime
smallint
smallmoney
time
tinyint
uniqueidentifier
varbinary
varchar
sysname
NULL = La entrada no es válida.
Precision
Número de dígitos del tipo de datos base numérico:
datetime = 23
smalldatetime = 16
float = 53
real = 24
decimal (p,s) y numeric (p,s) = p
money = 19
smallmoney = 10
bigint = 19
int = 10
smallint = 5
tinyint = 3
bit = 1
Los demás tipos = 0
int
NULL = La entrada no es válida.
Scale
Número de dígitos a la derecha del separador decimal del tipo de datos base numérico:
decimal (p,s) y numeric (p,s) = s
money y smallmoney = 4
datetime = 3
Los demás tipos = 0
int
NULL = La entrada no es válida.
TotalBytes
Número de bytes necesario para contener los metadatos y los datos del valor. Esta información puede resultar útil al comprobar el tamaño máximo de los datos en una columna sql_variant. Si el valor es superior a 900, se producirá un error en la creación del índice.
int
NULL = La entrada no es válida.
Collation
Representa la intercalación del valor concreto de sql_variant.
sysname
NULL = La entrada no es válida.
MaxLength
Longitud máxima del tipo de datos, en bytes. Por ejemplo, MaxLength de nvarchar(50) es 100, MaxLength de int es 4.
int
NULL = La entrada no es válida.
Tipos de valor devueltos
sql_variant
Ejemplos
En el ejemplo siguiente se recupera la información de SQL_VARIANT_PROPERTY para el valor 46279.1 de colA, donde colB = 1689, siempre que tableA tenga colA de tipo sql_variant y colB.
CREATE TABLE tableA(colA sql_variant, colB int)
INSERT INTO tableA values ( cast (46279.1 as decimal(8,2)), 1689)
SELECT SQL_VARIANT_PROPERTY(colA,'BaseType') AS 'Base Type',
SQL_VARIANT_PROPERTY(colA,'Precision') AS 'Precision',
SQL_VARIANT_PROPERTY(colA,'Scale') AS 'Scale'
FROM tableA
WHERE colB = 1689
Éste es el conjunto de resultados. Tenga en cuenta que cada uno de estos tres valores es sql_variant.
Base Type Precision Scale
--------- --------- -----
decimal 8 2
(1 row(s) affected)