Condividi tramite


SQL_VARIANT_PROPERTY (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL di Azure Synapse Analytics Platform System (PDW) in Microsoft Fabric

Restituisce il tipo di dati di base e altre informazioni su un valore di tipo sql_variant.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

SQL_VARIANT_PROPERTY ( expression , property )  

Nota

Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Argomenti

expression
Espressione di tipo sql_variant.

property
Contiene il nome della proprietà sql_variant per la quale è necessario specificare informazioni. property è varchar(128). I valori possibili sono i seguenti:

valore Descrizione Tipo di base di sql_variant restituito
BaseType Mapping dei tipi di dati SQL Server, come:

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 = Input non valido.
Precisione Numero di cifre del tipo di dati numerici di base:

date = 10

datetime = 23

datetime2 = 27

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

datetimeoffset = 34

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

smalldatetime = 16

time = 16

time (s) = 8 quando s = 0, altrimenti 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

Tutti gli altri tipi = 0
int

NULL = Input non valido.
Ridimensiona Numero di cifre a destra del separatore decimale con tipo di base numerico:

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)

Tutti gli altri tipi = 0
int

NULL = Input non valido.
TotalBytes Numero di byte necessari per l'archiviazione sia dei metadati che dei dati del valore. Questo valore risulta utile per verificare le dimensioni massime dei dati in una colonna sql_variant. Se il valore è maggiore di 900, la creazione dell'indice genera un errore. int

NULL = Input non valido.
Regole di confronto Regole di confronto del valore di tipo sql_variant specifico. sysname

NULL = Input non valido.
MaxLength Lunghezza massima del tipo di dati espressa in byte. Ad esempio, MaxLength di nvarchar(50) è 100, MaxLength di int è 4. int

NULL = Input non valido.

Tipi restituiti

sql_variant

Esempi

R. Uso di un tipo sql_variant in una tabella

Nell'esempio seguente vengono recuperate le informazioni di SQL_VARIANT_PROPERTY relative al valore colA46279.1, dove colB =1689, dato che tableA include colA di 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  

Il set di risultati è il seguente. Si noti che ognuno di questi tre valori è un sql_variant.

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

B. Uso di un tipo sql_variant come variabile

Nell'esempio seguente vengono recuperate informazioni SQL_VARIANT_PROPERTY su una variabile con nome @v1.

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

Vedi anche

sql_variant (Transact-SQL)