sql >> データベース >  >> RDS >> Sqlserver

SQL Server(T-SQL)で列のデータ型を取得する3つの方法

    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の結果セットで返される列のデータ型を確認するを参照してください。


    1. 最初の文字を大文字にします。 MySQL

    2. MySQL-郵便番号を0でフロントパッドする方法は?

    3. 例を使用してSQLSELECTの使用方法を学ぶ

    4. PostgreSQLの関数からテーブルタイプを返す