Partilhar via


SQL_VARIANT_PROPERTY (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

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

Transact-SQL convenções de sintaxe

Syntax

SQL_VARIANT_PROPERTY ( expression , property )  

Note

Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.

Arguments

expression
É uma expressão do tipo sql_variant.

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

Value Description Tipo de base de sql_variant devolvido
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.
Precision Número de dígitos do tipo de dados de base numérica:

data = 10

datetime = 23

datetime2 = 27

datetime2 (s) = 19 quando s = 0, else s + 20

datatempodeslocado = 34

datetimeoffset (s) = 26 quando s = 0, else s + 27

smalldatetime = 16

tempo = 16

tempo (s) = 8 quando s = 0, else s + 9

flutuador = 53

real = 24

decimal e numérico = 18

decimal (p,s) e numérico (p,s) = p

dinheiro = 19

dinheiro pequeno = 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 algarismos à direita da vírgula decimal do tipo de dados de base numérica:

decimal e numérico = 0

decimal (p,s) e numérico (p,s) = s

dinheiro e dinheiro pequeno = 4

datetime = 3

datetime2 = 7

datetime2 (s) = s (0 - 7)

datatempodeslocado = 7

datatempodeslocamento (s) = s (0 - 7)

tempo = 7

tempo (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 armazenar os metadados e os dados do valor. Essas informações seriam úteis para verificar o lado 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 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, MaxLength de int é 4. int

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

Tipos de devolução

sql_variant

Examples

A. Usando um sql_variant em uma tabela

O exemplo a SQL_VARIANT_PROPERTY seguir recupera informações sobre o colA valor 46279.1 onde colB =1689, dado que tableA tem colA que é 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. Observe que cada um desses três valores é um sql_variant.

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

B. Usando um sql_variant como variável

O exemplo a SQL_VARIANT_PROPERTY seguir recupera informações 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');  

Ver também

sql_variant (Transact-SQL)