SQL_VARIANT_PROPERTY (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Base de données SQL dans Microsoft Fabric
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');