sql_variant (Transact-SQL)
Type de données qui stocke les valeurs de divers types de données pris en charge par SQL Server 2005, à l'exception de text, ntext, image, timestamp et sql_variant.
Conventions de la syntaxe de Transact-SQL
Syntaxe
sql_variant
Notes
sql_variant peut être utilisé dans les colonnes, paramètres, variables, et les valeurs retournées des fonctions définies par l'utilisateur. sql_variant permet à ces objets de base de données de prendre en charge les valeurs des autres types de données.
Une colonne de type sql_variant peut contenir des lignes de types de données différents. Par exemple, une colonne définie en tant que sql_variant peut stocker des valeurs int, binary et char. Le tableau suivant répertorie les types de valeurs qui ne peuvent pas être stockées en utilisant sql_variant:
varchar(max) |
|
nvarchar(max) |
xml |
|
ntext |
|
timestamp |
|
Types définis par l'utilisateur |
sql_variant peut posséder une longueur maximale de 8 016 octets. Cela inclut les informations du type de base et la valeur du type de base. La longueur maximale de la valeur de type de base réelle est de 8 000 octets.
Un type de données sql_variant doit d'abord être converti à sa valeur de base avant d'être utilisé dans des opérations, notamment l'addition et la soustraction.
Il est possible d'attribuer une valeur par défaut à sql_variant. Ce type de données accepte également les valeurs NULL comme valeurs sous-jacentes, mais ces dernières ne seront pas associées à un type de base. En outre, sql_variant ne peut pas avoir une autre sql_variant comme type de base.
Une clé unique, primaire ou étrangère peut inclure des colonnes de type sql_variant, mais la longueur totale des valeurs de données qui composent la clé d'une ligne spécifique ne doit pas être supérieure à la longueur maximale d'un index. Cette longueur est de 900 octets.
Une table peut inclure n'importe quel nombre de colonnes sql_variant.
sql_variant ne peut pas être utilisé dans les instructions CONTAINSTABLE et FREETEXTTABLE.
ODBC ne prend pas pleinement en charge le type sql_variant. Par conséquent, les requêtes des colonnes sql_variant sont retournées sous la forme de données binaires lorsque vous utilisez Microsoft OLE DB Provider pour ODBC (MSDASQL). Par exemple, une colonne sql_variant contenant les données chaîne de caractères « PS2091 » est retournée sous la forme 0x505332303931.
Comparaison des valeurs sql_variant
Le type de données sql_variant est situé tout en haut de la hiérarchie des types de données pour la conversion. Pour les comparaisons sql_variant, la hiérarchie des types de données SQL Server est ordonnée en familles.
Hiérarchie des types de données | Famille de types de données |
---|---|
sql_variant |
sql_variant |
datetime |
Date et heure |
smalldatetime |
Date et heure |
float |
Valeur numérique approchée |
real |
Valeur numérique approchée |
decimal |
Valeur numérique exacte |
money |
Valeur numérique exacte |
smallmoney |
Valeur numérique exacte |
bigint |
Valeur numérique exacte |
int |
Valeur numérique exacte |
smallint |
Valeur numérique exacte |
tinyint |
Valeur numérique exacte |
bit |
Valeur numérique exacte |
nvarchar |
Unicode |
nchar |
Unicode |
varchar |
Unicode |
char |
Unicode |
varbinary |
Binaire |
binary |
Binaire |
uniqueidentifier |
Uniqueidentifier |
Les règles suivantes s'appliquent aux comparaisons sql_variant :
- Lors de la comparaison des valeurs sql_variant issues de différents types de données de base appartenant à des familles de types de données différentes, la valeur de la famille dont le rang est supérieur dans la hiérarchie est considérée comme la valeur la plus élevée des deux.
- Lors de la comparaison des valeurs sql_variant issues de différents types de données de base appartenant à la même famille, la valeur du type dont le rang est inférieur dans la hiérarchie est implicitement convertie vers l'autre type de données et la comparaison est alors effectuée.
- Lorsque les valeurs sql_variant des types de données char, varchar, nchar ou nvarchar sont comparées, elles sont évaluées d'après les critères suivants : LCID, version LCID, indicateurs de comparaison et ID de tri. Chaque critère est comparé en tant que valeur d'entier, dans l'ordre indiqué.
Voir aussi
Référence
CAST et CONVERT (Transact-SQL)
Autres ressources
Utilisation de données sql_variant