Compartilhar via


SQL_VARIANT_PROPERTY (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Retorna o tipo de dados base e outras informações sobre um valor sql_variant.

Convenções de sintaxe de Transact-SQL

Sintaxe

SQL_VARIANT_PROPERTY ( expression , property )  

Observação

Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

Argumentos

expressão
É uma expressão do tipo sql_variant.

property
Contém o nome da propriedade sql_variant cujas informações devem ser fornecidas. property é varchar( 128 ) e pode ser um dos seguintes valores:

Valor Descrição Tipo base de sql_variant retornado
BaseType Tipo de dados do 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 = A entrada não é válida.
Precisão Número de dígitos do tipo de dados base numérico:

date = 10

datetime = 23

datetime2 = 27

datetime2 (s) = 19 quando s = 0; caso contrário, s + 20

datetimeoffset = 34

datetimeoffset (s) = 26 quando s = 0; caso contrário, s + 27

smalldatetime = 16

time = 16

time (s) = 8 quando s = 0; caso contrário, s + 9

float = 53

real = 24

decimal e numeric = 18

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.
Escala Número de dígitos à direita do ponto decimal do tipo de dados base numérico:

decimal e numeric = 0

decimal (p,s) e numeric (p,s) = s

money e 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)

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 serão ú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.
Ordenação Representa a ordenação do valor sql_variant específico. sysname

NULL = A entrada não é válida.
MaxLength Comprimento máximo do tipo de dados, em bytes. Por exemplo, MaxLength de nvarchar( 50 ) é 100 e MaxLength de int é 4. int

NULL = A entrada não é válida.

Tipos de retorno

sql_variant

Exemplos

a. Usando uma sql_variant em uma tabela

O exemplo a seguir recupera informações de SQL_VARIANT_PROPERTY sobre o valor de colA46279.1, em que colB =1689, considerando 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  

Veja a seguir o conjunto de resultados. Observe que cada um desses três valores é uma sql_variant.

Base Type    Precision    Scale  
---------    ---------    -----  
decimal      8           2  
  
(1 row(s) affected)  

B. Usando uma sql_variant como uma variável

O exemplo a seguir recupera informações de SQL_VARIANT_PROPERTY sobre uma variável chamada @v1.

DECLARE @v1 sql_variant;  
SET @v1 = 'ABC';  
SELECT @v1;  
SELECT SQL_VARIANT_PROPERTY(@v1, 'BaseType');  
SELECT SQL_VARIANT_PROPERTY(@v1, 'MaxLength');  

Consulte Também

sql_variant (Transact-SQL)