Partager via


SQL_VARIANT_PROPERTY (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Retourne le type de données de base et d’autres informations sur une valeur sql_variant.

Conventions de la syntaxe Transact-SQL

Syntaxe

SQL_VARIANT_PROPERTY ( expression , property )  

Notes

Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Arguments

expression
Expression de type sql_variant.

property
Contient le 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

bit

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.
Précision Nombre de chiffres du type de données numériques de base :

date = 10

datetime = 23

datetime2 = 27

datetime2 (s) = 19 quand s = 0, sinon s + 20

datetimeoffset = 34

datetimeoffset (s) = 26 quand s = 0, sinon s + 27

smalldatetime = 16

time = 16

time (s) = 8 quand s = 0, sinon s + 9

float = 53

real = 24

decimal et numeric = 18

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.
Mettre à l'échelle Nombre de chiffres décimaux après la virgule (point) dans le type de données numériques de base :

decimal et numeric = 0

decimal (p,s) et numeric (p,s) = s

money et 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)

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.
Classement Représente le 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 100, MaxLength de int est 4. int

NULL = Entrée non valide.

Types de retour

sql_variant

Exemples

R. Utilisation d’un type sql_variant dans une table

L’exemple suivant extrait des informations SQL_VARIANT_PROPERTY relatives à la valeur colA46279.1colB =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 le jeu de 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)  

B. Utilisation d’un type sql_variant comme variable

L’exemple suivant extrait les informations SQL_VARIANT_PROPERTY relatives à une variable nommée @v1.

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

Voir aussi

sql_variant (Transact-SQL)