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 colA
46279.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');