Les interfaces graphiques telles que SSMS ou Azure Data Studio permettent de voir facilement le type de données d'une colonne. Habituellement, il suffit de naviguer vers la colonne dans l'explorateur d'objets et vous pouvez voir le type de données juste à côté de la colonne.
Mais si vous utilisez T-SQL, vous devrez exécuter une requête.
Les information_schema.columns
Afficher
Le information_schema.columns
view est une bonne option si vous voulez simplement le type de données et rien de plus :
SELECT
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH AS MAX_LENGTH,
CHARACTER_OCTET_LENGTH AS OCTET_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Products'
AND COLUMN_NAME = 'ProductName';
Exemple de résultat :
+---------------+-------------+--------------+----------------+ | COLUMN_NAME | DATA_TYPE | MAX_LENGTH | OCTET_LENGTH | |---------------+-------------+--------------+----------------| | ProductName | varchar | 255 | 255 | +---------------+-------------+--------------+----------------+
Remplacer Products
et ProductName
avec le nom de votre table et colonne respectivement.
OK, j'ai renvoyé un peu plus que le type de données ici. Mais vous pouvez omettre les autres colonnes si nécessaire. Ou vous pouvez en ajouter d'autres. Par exemple, certaines colonnes contiennent la précision de la colonne au cas où vous consulteriez une colonne numérique ou datetime.
Vous pouvez renvoyer toutes les colonnes comme ceci :
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Products'
AND COLUMN_NAME = 'ProductName';
Les sys.columns
Afficher
Les sys.columns
la vue est une autre option. Nous pouvons joindre cela avec le sys.tables
vue pour obtenir une colonne spécifique à partir d'une table spécifique :
SELECT
c.name,
type_name(c.system_type_id) AS system_type,
type_name(c.user_type_id) AS user_type,
c.max_length,
c.precision,
c.scale
FROM sys.tables t
JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.name = 'Products'
AND c.name = 'ProductName';
Exemple de résultat :
+-------------+---------------+-------------+--------------+-------------+---------+ | name | system_type | user_type | max_length | precision | scale | |-------------+---------------+-------------+--------------+-------------+---------| | ProductName | varchar | varchar | 255 | 0 | 0 | +-------------+---------------+-------------+--------------+-------------+---------+
Encore une fois, incluez plus ou moins de colonnes selon vos besoins.
Dans cet exemple, j'ai utilisé le TYPE_NAME()
fonction pour renvoyer le nom du type de données, en fonction de son ID. Cela m'a évité d'avoir à faire une jointure sur le sys.types
tableau.
Le sp_help
Procédure stockée
Le sp_help
procédure stockée peut être utile si vous souhaitez renvoyer plus d'informations sur la table.
Cette procédure stockée renvoie des informations sur un objet de base de données (tout objet répertorié dans le sys.sysobjects
vue de compatibilité), un type de données défini par l'utilisateur ou un type de données :
EXEC sp_help Products;
Cela renvoie beaucoup de résultats, je ne vais donc pas tout énumérer ici.
Remplacez simplement Products
avec le nom de la table ou de tout autre objet sur lequel vous souhaitez obtenir des informations.
Obtenir le type de données d'une colonne à partir d'une requête
Vous pouvez également obtenir le type de données des colonnes renvoyées par une requête.
Voir Trouver le type de données des colonnes renvoyées dans un jeu de résultats dans SQL Server pour plus d'informations et d'exemples.