ホームページ > データベース > mysql チュートリアル > SQL 列の完全なデータ型を取得するにはどうすればよいですか?

SQL 列の完全なデータ型を取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-29 13:18:15
オリジナル
284 人が閲覧しました

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

SQL で列の型を取得する方法

データベース管理の領域では、テーブルの構造に関する情報を取得することが不可欠です。列のデータ型も含まれます。この知識は、データの理解、操作、クエリの最適化に役立ちます。ありがたいことに、SQL には特定の列のデータ型を取得するメカニズムが用意されています。

INFORMATION_SCHEMA.COLUMNS ビューの使用

INFORMATION_SCHEMA.COLUMNS ビューは、次のような包括的なカタログを提供します。列タイプを含むテーブルのメタデータ。このビューは、列のデータ型、NULL 値の許容性、その他の属性を含む豊富な情報を提供します。特定の列のデータ型を取得するには、次のクエリを使用します。

SELECT
    DATA_TYPE
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE
    TABLE_SCHEMA = '[yourSchemaName]' AND
    TABLE_NAME = '[yourTableName]' AND
    COLUMN_NAME = '[yourColumnName]';
ログイン後にコピー

パラメータを使用した型の再構築

DATA_TYPE 列は重要な情報を提供しますが、パラメーター化された型の完全な仕様が常に含まれるわけではありません。たとえば、nvarchar(max) と入力された列は、nvarchar としてのみ表示されます。これに対処するには、次のアプローチを検討してください。

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]';
ログイン後にコピー

このクエリは、パラメーター化された型のパラメーターを含む完全なデータ型仕様を再構築し、説明的な null 可能性インジケーターを追加します。

これらの手法を利用して、 SQL テーブル内の列のデータ型を正常に取得して理解できます。

以上がSQL 列の完全なデータ型を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート