SQL_VARIANT_PROPERTY (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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.

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

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 colA46279.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  

El conjunto de resultados es el siguiente: 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');  

Consulte también

sql_variant (Transact-SQL)