Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Restituisce il tipo di dati di base da un valore SQL_Variant in SQL Server

In SQL Server puoi utilizzare SQL_VARIANT_PROPERTY() funzione per restituire informazioni sul tipo di dati di base da una sql_variant valore.

La funzione accetta due argomenti:sql_variant valore e la proprietà per la quale devono essere fornite le informazioni.

Esempio 1 – Utilizzo di base

Ecco un esempio che illustra il concetto e l'utilizzo di base.

DECLARE @var sql_variant = 'Hey!';
SELECT SQL_VARIANT_PROPERTY(@var, 'BaseType') AS BaseType;

Risultato:

+------------+
| BaseType   |
|------------|
| varchar    |
+------------+

In questo caso, il tipo di base è varchar .

Ecco cosa succede se cambio il valore in un tipo diverso:

DECLARE @var sql_variant = $1.50;
SELECT SQL_VARIANT_PROPERTY(@var, 'BaseType') AS BaseType;

Risultato:

+------------+
| BaseType   |
|------------|
| money      |
+------------+

Questa volta il tipo di base è denaro .

Esempio 2 – Altre proprietà

Al momento della stesura di questo articolo, ci sono sei possibili argomenti per questa funzione. In altre parole, puoi ottenere informazioni su sei diverse proprietà del valore passato.

Ecco un esempio che usa tutti e sei:

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;

Risultato:

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