Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Retornar o tipo de dados base de um valor de variante SQL_ no SQL Server


No SQL Server, você pode usar o SQL_VARIANT_PROPERTY() função para retornar informações de tipo de dados base de um sql_variant valor.

A função aceita dois argumentos:o sql_variant valor e a propriedade para a qual as informações devem ser fornecidas.


Exemplo 1 – Uso básico


Aqui está um exemplo que demonstra o conceito básico e o uso.
DECLARE @var sql_variant = 'Hey!';
SELECT SQL_VARIANT_PROPERTY(@var, 'BaseType') AS BaseType;

Resultado:
+------------+
| BaseType   |
|------------|
| varchar    |
+------------+

Nesse caso, o tipo base é varchar .

Aqui está o que acontece se eu alterar o valor para um tipo diferente:
DECLARE @var sql_variant = $1.50;
SELECT SQL_VARIANT_PROPERTY(@var, 'BaseType') AS BaseType;

Resultado:
+------------+
| BaseType   |
|------------|
| money      |
+------------+

Desta vez, o tipo base é dinheiro .

Exemplo 2 – Outras Propriedades


No momento da redação deste artigo, existem seis argumentos possíveis para esta função. Em outras palavras, você pode obter informações sobre seis propriedades diferentes do valor passado.

Aqui está um exemplo que usa todos os seis:
DECLARE @var sql_variant = SYSDATETIME();
SELECT 
  SQL_VARIANT_PROPERTY(@var, 'BaseType') AS BaseType,
  SQL_VARIANT_PROPERTY(@var, 'Precision') AS Precision,
  SQL_VARIANT_PROPERTY(@var, 'Scale') AS Scale,
  SQL_VARIANT_PROPERTY(@var, 'TotalBytes') AS TotalBytes,
  SQL_VARIANT_PROPERTY(@var, 'Collation') AS Collation,
  SQL_VARIANT_PROPERTY(@var, 'MaxLength') AS MaxLength;

Resultado:
+------------+-------------+---------+--------------+-------------+-------------+
| BaseType   | Precision   | Scale   | TotalBytes   | Collation   | MaxLength   |
|------------+-------------+---------+--------------+-------------+-------------|
| datetime2  | 27          | 7       | 11           | NULL        | 8           |
+------------+-------------+---------+--------------+-------------+-------------+