SSMSやAzureDataStudioなどのGUIを使用すると、列のデータ型を簡単に確認できます。通常、オブジェクトエクスプローラーで列に移動するだけで、列のすぐ横にデータ型が表示されます。
ただし、T-SQLを使用している場合は、クエリを実行する必要があります。
information_schema.columns
表示
information_schema.columns
単にデータ型が必要で、それ以上は必要ない場合は、ビューが適しています。
SELECT
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH AS MAX_LENGTH,
CHARACTER_OCTET_LENGTH AS OCTET_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Products'
AND COLUMN_NAME = 'ProductName';
サンプル結果:
+---------------+-------------+--------------+----------------+ | COLUMN_NAME | DATA_TYPE | MAX_LENGTH | OCTET_LENGTH | |---------------+-------------+--------------+----------------| | ProductName | varchar | 255 | 255 | +---------------+-------------+--------------+----------------+
Products
を置き換えます およびProductName
それぞれテーブルと列の名前を付けます。
OK、ここではデータ型だけではありません。ただし、必要に応じて他の列を省略できます。または、さらに追加することもできます。たとえば、数値または日時の列を見ている場合に備えて、列の精度を含む列があります。
次のようにすべての列を返すことができます:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Products'
AND COLUMN_NAME = 'ProductName';
sys.columns
表示
sys.columns
ビューは別のオプションです。これをsys.tables
と結合できます 特定のテーブルから特定の列を取得するためのビュー:
SELECT
c.name,
type_name(c.system_type_id) AS system_type,
type_name(c.user_type_id) AS user_type,
c.max_length,
c.precision,
c.scale
FROM sys.tables t
JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.name = 'Products'
AND c.name = 'ProductName';
サンプル結果:
+-------------+---------------+-------------+--------------+-------------+---------+ | name | system_type | user_type | max_length | precision | scale | |-------------+---------------+-------------+--------------+-------------+---------| | ProductName | varchar | varchar | 255 | 0 | 0 | +-------------+---------------+-------------+--------------+-------------+---------+
繰り返しますが、必要に応じて多かれ少なかれ列を含めます。
この例では、TYPE_NAME()
を使用しました IDに基づいてデータ型の名前を返す関数。これにより、sys.types
で参加する必要がなくなりました。 テーブル。
sp_help
ストアドプロシージャ
sp_help
ストアドプロシージャは、テーブルに関する詳細情報を返したい場合に役立ちます。
このストアドプロシージャは、データベースオブジェクト(sys.sysobjects
にリストされているオブジェクト)に関する情報を返します。 互換表示)、ユーザー定義のデータ型、またはデータ型:
EXEC sp_help Products;
これは多くの出力を返すので、ここにすべてをリストすることはしません。
Products
を置き換えるだけです 情報を取得したいテーブルまたはその他のオブジェクトの名前。
クエリから列のデータ型を取得する
クエリによって返される列のデータ型を取得することもできます。
詳細と例については、SQLServerの結果セットで返される列のデータ型を確認するを参照してください。