Maison > base de données > tutoriel mysql > Comment récupérer le type de données complet d'une colonne SQL ?

Comment récupérer le type de données complet d'une colonne SQL ?

Susan Sarandon
Libérer: 2024-12-29 13:18:15
original
283 Les gens l'ont consulté

How to Retrieve the Complete Data Type of a SQL Column?

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]';
Copier après la connexion

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]';
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal