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 サイトの他の関連記事を参照してください。