SQL_VARIANT_PROPERTY (Transact-SQL)
Retorna o tipo de dados base e outras informações sobre um valor sql_variant.
Convenções da sintaxe Transact-SQL
SQL_VARIANT_PROPERTY ( expression , property )
expression
É uma expressão do tipo sql_variant.property
Contém o nome da propriedade sql_variant cujas informações serão fornecidas. property é varchar(128), e pode ter qualquer um dos valores a seguir:Valor
Descrição
Tipo base de sql_variant retornado
BaseType
Tipo de dados do 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 = A entrada não é válida.
Precision
Número de dígitos do tipo de dados base numérico:
datetime = 23
smalldatetime = 16
float = 53
real = 24
decimal (p, s) e numeric (p, s) = p
money = 19
smallmoney = 10
bigint = 19
int = 10
smallint = 5
tinyint = 3
bit = 1
Todos os outros tipos = 0
int
NULL = A entrada não é válida.
Scale
Número de dígitos à direita do ponto decimal do tipo de dados base numérico:
decimal (p, s) e numeric (p, s) = s
money e smallmoney = 4
datetime = 3
Todos os outros tipos = 0
int
NULL = A entrada não é válida.
TotalBytes
Número de bytes necessários para manter os metadados e os dados do valor. Essas informações seriam úteis na verificação do tamanho máximo dos dados em uma coluna sql_variant. Se o valor for maior que 900, a criação do índice falhará.
int
NULL = A entrada não é válida.
Collation
Representa o agrupamento do valor sql_variant em particular.
sysname
NULL = A entrada não é válida.
MaxLength
Comprimento máximo do tipo de dados, em bytes. Por exemplo, o MaxLength de nvarchar(50) é 100; o MaxLength de int é 4.
int
NULL = A entrada não é válida.
sql_variant
O exemplo a seguir recupera informações SQL_VARIANT_PROPERTY sobre o valor de colA 46279.1, onde colB = 1689, supondo-se que tableA tenha colA do tipo sql_variant e 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
Aqui está o conjunto de resultados. Note que cada um desses três valores é um sql_variant.
Base Type Precision Scale
--------- --------- -----
decimal 8 2
(1 row(s) affected)