ホームページ > データベース > mysql チュートリアル > INFORMATION_SCHEMA を使用して SQL 列のデータ型を決定する方法

INFORMATION_SCHEMA を使用して SQL 列のデータ型を決定する方法

Patricia Arquette
リリース: 2024-12-27 16:44:11
オリジナル
299 人が閲覧しました

How to Determine a SQL Column's Data Type Using INFORMATION_SCHEMA?

列のデータ型を決定する SQL ステートメント

データベース管理の領域では、テーブルの列に関連付けられたデータ型を理解することが重要です。 SQL は、テーブルの構造とプロパティに対する包括的なビューを提供します。これには、特定の SQL ステートメントを使用して列のデータ型に関する情報を取得する機能が含まれます。

INFORMATION_SCHEMA.COLUMNS

INFORMATION_SCHEMA.COLUMNS ビューは、クエリのための強力なツールとして機能します。データベース内のテーブルに関するメタデータ。このビューでは、データ型を含む列に関するさまざまな詳細が公開されます。 DATA_TYPE 列を利用すると、特定の列のデータ型を判断できます。

パラメータ化に関する考慮事項

INFORMATION_SCHEMA.COLUMNS の DATA_TYPE 列が常に提供するとは限らないことに注意してください。パラメータ化されたデータ型に必要なすべての情報。たとえば、パラメータの引数が含まれていないため、列の動作に潜在的な問題が発生する可能性があります。

これに対処するには、INFORMATION_SCHEMA.COLUMNS ビュー内の次のような追加の列を参照することをお勧めします。

  • CHARACTER_OCTET_LENGTH (バイナリの場合)タイプ)
  • CHARACTER_MAXIMUM_LENGTH (文字および各国文字タイプの場合)
  • DATETIME_PRECISION (datetime2 および datetimeoffset タイプの場合)
  • NUMERIC_PRECISION および NUMERIC_SCALE (10 進数および数値の場合)タイプ)

これらの列を組み合わせることで、データ型の完全なパラメータ化を再構築できます。

サンプル クエリ

次の SQLこのクエリでは、INFORMATION_SCHEMA.COLUMNS を使用して、指定された列の完全なデータ型情報を取得する方法を示します。 view:

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

サンプル出力

クエリを実行すると、パラメータや null 値の可能性を含む、指定された列のデータ型の包括的な説明が返されます。出力例は次のとおりです:

TABLE_SCHEMA TABLE_NAME ORDINAL_POSITION COLUMN_NAME FULL_DATA_TYPE
yourSchemaName yourTableName 1 yourColumnName nvarchar(max) NOT NULL

以上がINFORMATION_SCHEMA を使用して SQL 列のデータ型を決定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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