SQL_VARIANT_PROPERTY (Transact-SQL)
Restituisce il tipo di dati di base e altre informazioni su un valore di tipo sql_variant.
Convenzioni della sintassi Transact-SQL
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 2005, ad esempio: bigint binary char decimal float int money nchar numeric nvarchar real smalldatetime smallint smallmoney 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 colA``46279.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)