SQL_VARIANT_PROPERTY (Transact-SQL)

Devuelve el tipo de datos base y otra información sobre un valor sql_variant.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL


SQL_VARIANT_PROPERTY ( expression , property )

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 2005, como:

bigint

binary

char

decimal

float

int

money

nchar

numeric

nvarchar

real

smalldatetime

smallint

smallmoney

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.

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)

Adiciones de comunidad

AGREGAR
Mostrar: