SQL_VARIANT_PROPERTY (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Devuelve el tipo de datos base y otra información sobre un valor sql_variant.
Convenciones de sintaxis de Transact-SQL
Sintaxis
SQL_VARIANT_PROPERTY ( expression , property )
Nota:
El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.
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 varchar( 128 ) y puede ser cualquiera de los siguientes valores:
Valor | Descripción | Tipo base de sql_variant devuelto |
---|---|---|
BaseType | Tipo de datos de SQL Server, como: bigint binary bit 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. |
Precisión | Número de dígitos del tipo de datos base numérico: date = 10 datetime = 23 datetime2 = 27 datetime2 (s) = 19 cuando s = 0, de lo contrario s + 20 datetimeoffset = 34 datetimeoffset (s) = 26 cuando s = 0, de lo contrario s + 27 smalldatetime = 16 time = 16 time (s) = 8 cuando s = 0, de lo contrario s + 9 float = 53 real = 24 decimal y numeric = 18 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. |
Escala | Número de dígitos a la derecha del separador decimal del tipo de datos base numérico: decimal y numeric = 0 decimal (p,s) y numeric (p,s) = s money y smallmoney = 4 datetime = 3 datetime2 = 7 datetime2 (s) = s (0 - 7) datetimeoffset = 7 datetimeoffset (s) = s (0 - 7) time = 7 time (s) = s (0 - 7) 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 produce un error en la creación del índice. | int NULL = La entrada no es válida. |
Intercalación | 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 y MaxLength de int, 4. | int NULL = La entrada no es válida. |
Tipos de valor devuelto
sql_variant
Ejemplos
A. Usar un tipo de datos sql_variant en una tabla
En el siguiente ejemplo se recupera la información de SQL_VARIANT_PROPERTY
relativa al valor de colA
46279.1
, 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
Este 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)
B. Usar un tipo de datos sql_variant como una variable
En el siguiente ejemplo se recupera información de SQL_VARIANT_PROPERTY
sobre una variable denominada @v1.
DECLARE @v1 sql_variant;
SET @v1 = 'ABC';
SELECT @v1;
SELECT SQL_VARIANT_PROPERTY(@v1, 'BaseType');
SELECT SQL_VARIANT_PROPERTY(@v1, 'MaxLength');