Maison >base de données >tutoriel mysql >Comment déterminer le type de données d'une colonne SQL à l'aide de INFORMATION_SCHEMA ?
Instruction SQL pour déterminer le type de données des colonnes
Dans le domaine de la gestion de bases de données, comprendre les types de données associés aux colonnes de table est crucial. SQL fournit une vue complète de la structure et des propriétés des tables. Cela inclut la possibilité de récupérer des informations sur les types de données de colonne à l'aide d'une instruction SQL spécifique.
INFORMATION_SCHEMA.COLUMNS
La vue INFORMATION_SCHEMA.COLUMNS sert d'outil puissant pour les requêtes. métadonnées sur les tables d'une base de données. Cette vue expose divers détails sur les colonnes, y compris leurs types de données. En utilisant la colonne DATA_TYPE, vous pouvez déterminer le type de données d'une colonne spécifique.
Considérations sur le paramétrage
Notez que la colonne DATA_TYPE dans INFORMATION_SCHEMA.COLUMNS peut ne pas toujours fournir toutes les informations nécessaires pour les types de données paramétrés. Par exemple, il n'inclut pas d'arguments pour les paramètres, ce qui peut entraîner des problèmes potentiels de comportement des colonnes.
Pour résoudre ce problème, il est recommandé de consulter des colonnes supplémentaires dans la vue INFORMATION_SCHEMA.COLUMNS, telles que :
Par en combinant ces colonnes, vous pouvez reconstruire le paramétrage complet du type de données.
Exemple de requête
La requête SQL suivante montre comment récupérer les informations complètes sur le type de données pour un colonne spécifiée à l'aide de la vue INFORMATION_SCHEMA.COLUMNS :
WITH q AS ( SELECT c.TABLE_SCHEMA, c.TABLE_NAME, c.ORDINAL_POSITION, c.COLUMN_NAME, c.DATA_TYPE, CASE WHEN c.DATA_TYPE IN ( N'binary', N'varbinary' ) THEN ( CASE c.CHARACTER_OCTET_LENGTH WHEN -1 THEN N'(max)' ELSE CONCAT( N'(', c.CHARACTER_OCTET_LENGTH, N')' ) END ) WHEN c.DATA_TYPE IN ( N'char', N'varchar', N'nchar', N'nvarchar' ) THEN ( CASE c.CHARACTER_MAXIMUM_LENGTH WHEN -1 THEN N'(max)' ELSE CONCAT( N'(', c.CHARACTER_MAXIMUM_LENGTH, N')' ) END ) WHEN c.DATA_TYPE IN ( N'datetime2', N'datetimeoffset' ) THEN CONCAT( N'(', c.DATETIME_PRECISION, N')' ) WHEN c.DATA_TYPE IN ( N'decimal', N'numeric' ) THEN CONCAT( N'(', c.NUMERIC_PRECISION, N',', c.NUMERIC_SCALE, N')' ) END AS DATA_TYPE_PARAMETER, CASE c.IS_NULLABLE WHEN N'NO' THEN N' NOT NULL' WHEN N'YES' THEN N' NULL' END AS IS_NULLABLE2 FROM INFORMATION_SCHEMA.COLUMNS AS c ) SELECT q.TABLE_SCHEMA, q.TABLE_NAME, q.ORDINAL_POSITION, q.COLUMN_NAME, CONCAT( q.DATA_TYPE, ISNULL( q.DATA_TYPE_PARAMETER, N'' ), q.IS_NULLABLE2 ) AS FULL_DATA_TYPE FROM q WHERE q.TABLE_SCHEMA = 'yourSchemaName' AND q.TABLE_NAME = 'yourTableName' AND q.COLUMN_NAME = 'yourColumnName' ORDER BY q.TABLE_SCHEMA, q.TABLE_NAME, q.ORDINAL_POSITION;
Exemple Sortie
L'exécution de la requête renverrait une description complète du type de données pour la colonne spécifiée, y compris ses paramètres et sa nullité. Voici un exemple de résultat :
TABLE_SCHEMA | TABLE_NAME | ORDINAL_POSITION | COLUMN_NAME | FULL_DATA_TYPE |
---|---|---|---|---|
yourSchemaName | yourTableName | 1 | yourColumnName | nvarchar(max) NOT NULL |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!