SQL_VARIANT_PROPERTY (Transact-SQL)
Renvoie le type de données de base et d'autres informations sur une valeur sql_variant.
Syntaxe
SQL_VARIANT_PROPERTY ( expression , property )
Arguments
expression
Expression de type sql_variant.property
Nom de la propriété sql_variant dont les informations doivent être fournies. property est de type varchar(128), et peut prendre l'une des valeurs suivantes.Valeur
Description
Type de base sql_variant renvoyé
BaseType
Type de données SQL Server, tel que :
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 = Entrée non valide.
Precision
Nombre de chiffres du type de données numériques de base :
datetime = 23
smalldatetime = 16
float = 53
real = 24
decimal (p,s) et numeric (p,s) = p
money = 19
smallmoney = 10
bigint = 19
int = 10
smallint = 5
tinyint = 3
bit = 1
Tous les autres types = 0
int
NULL = Entrée non valide.
Échelle
Nombre de chiffres décimaux après la virgule (point) dans le type de données numériques de base :
decimal (p,s) et numeric (p,s) = s
money et smallmoney = 4
datetime = 3
Tous les autres types = 0
int
NULL = Entrée non valide.
TotalBytes
Nombre d'octets requis pour conserver les métadonnées et les données de la valeur. Ces informations permettent de vérifier la taille maximale des données dans une colonne sql_variant. Si cette valeur est supérieure à 900, la création de l'index échoue.
int
NULL = Entrée non valide.
Collation
Classement de la valeur sql_variant particulière.
sysname
NULL = Entrée non valide.
MaxLength
Longueur maximale du type de données (en octets). Par exemple, MaxLength de nvarchar(50) est égal à 100, MaxLength de int est égal à 4.
int
NULL = Entrée non valide.
Type des valeurs renvoyées
sql_variant
Exemples
L'exemple suivant extrait des informations SQL_VARIANT_PROPERTY relatives à la valeur colA46279.1 où colB =1689, étant donné que tableA a la valeur colA de type sql_variant et 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
Voici l'ensemble des résultats. Notez que chacune de ces trois valeurs est de type sql_variant.
Base Type Precision Scale
--------- --------- -----
decimal 8 2
(1 row(s) affected)