Comment récupérer le type de colonne en SQL
Dans le domaine de la gestion de bases de données, il est impératif d'avoir des informations sur la structure des tables, y compris les types de données de leurs colonnes. Ces connaissances facilitent la compréhension, la manipulation et l'optimisation des requêtes. Heureusement, SQL fournit un mécanisme pour récupérer le type de données d'une colonne spécifique.
Utilisation de la vue INFORMATION_SCHEMA.COLUMNS
La vue INFORMATION_SCHEMA.COLUMNS fournit un catalogue complet de métadonnées de la table, y compris les types de colonnes. Cette vue offre une multitude d'informations, notamment le type de données de la colonne, la valeur Nullabilité et d'autres attributs. Pour récupérer le type de données d'une colonne particulière, utilisez la requête suivante :
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '[yourSchemaName]' AND TABLE_NAME = '[yourTableName]' AND COLUMN_NAME = '[yourColumnName]';
Reconstruction de types avec des paramètres
Bien que la colonne DATA_TYPE fournisse des informations essentielles, elle peut n’incluent pas toujours la spécification complète des types paramétrés. Par exemple, une colonne saisie sous la forme nvarchar(max) s'affichera uniquement sous la forme nvarchar. Pour résoudre ce problème, envisagez l'approche suivante :
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 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]';
Cette requête reconstruit la spécification complète du type de données, y compris les paramètres des types paramétrés, et ajoute un indicateur descriptif de nullité.
En utilisant ces techniques, vous pouvez réussir à récupérer et comprendre les types de données des colonnes dans vos tables SQL.
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!