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 colA
46279.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 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');