SQL_VARIANT_PROPERTY (Transact-SQL)
Restituisce il tipo di dati di base e altre informazioni su un valore di tipo sql_variant.
Sintassi
SQL_VARIANT_PROPERTY ( expression , property )
Argomenti
expression
Espressione di tipo sql_variant.property
Contiene il nome della proprietà sql_variant per la quale è necessario fornire informazioni. property è di tipo varchar(128). I possibili valori sono i seguenti.Valore
Descrizione
Tipo di base di sql_variant restituito
BaseType
Tipo di dati di SQL Server, ad esempio:
bigint
binary
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.
Precision
Numero di cifre del tipo di dati numerici di base:
datetime = 23
smalldatetime = 16
float = 53
real = 24
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.
Scale
Numero di cifre a destra del separatore decimale con tipo di base numerico:
decimal (p,s) e numeric (p,s) = s
money e smallmoney = 4
datetime = 3
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 di tipo sql_variant. Se il valore è maggiore di 900, la creazione dell'indice genera un errore.
int
NULL = Input non valido.
Collation
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 tipo nvarchar(50) è uguale a 100, mentre MaxLength di tipo int è uguale a 4.
int
NULL = Input non valido.
Tipi restituiti
sql_variant
Esempi
Nell'esempio seguente vengono recuperate le informazioni di SQL_VARIANT_PROPERTY relative al valore colA46279.1, dove colB =1689, partendo dal presupposto 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
Set di risultati: si noti che tutti e tre i valori sono di tipo sql_variant.
Base Type Precision Scale
--------- --------- -----
decimal 8 2
(1 row(s) affected)