SQL Serverでは、COL_NAME()
を使用できます IDと親テーブルIDに基づいて、列の名前を返す関数。
これは、列IDと親テーブルのIDのみを格納するテーブルをクエリする場合に役立ちます。
COL_NAME()
関数には、テーブルIDと列IDの2つの引数が必要です。
構文
構文は次のようになります:
COL_NAME ( table_id , column_id )
例1-基本的な使用法
これがどのように機能するかを示す基本的な例です。
SELECT COL_NAME(885578193, 1) AS Result;
結果:
+----------+ | Result | |----------| | ArtistId | +----------+
この場合、IDが885578193のテーブルから列1の名前を返しました。
例2–テーブルIDを取得する
テーブルの名前しかわからない場合は、OBJECT_ID()
を使用できます。 テーブル名に基づいてIDを返します。
上記のテーブルの名前を知っているので、前の例を次のように変更できます:
SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS Result;
結果:
+----------+ | Result | |----------| | ArtistId | +----------+
ここでも同じですが、テーブルIDが含まれています:
SELECT OBJECT_ID('dbo.Artists') AS [Table ID], COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Column Name];
結果:
+------------+---------------+ | Table ID | Column Name | |------------+---------------| | 885578193 | ArtistId | +------------+---------------+
例3–その他の列
ここでは、出力にさらにいくつかの列を追加します。
SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Column 1], COL_NAME(OBJECT_ID('dbo.Artists'), 2) AS [Column 2], COL_NAME(OBJECT_ID('dbo.Artists'), 3) AS [Column 3], COL_NAME(OBJECT_ID('dbo.Artists'), 4) AS [Column 4];
結果:
+------------+------------+------------+------------+ | Column 1 | Column 2 | Column 3 | Column 4 | |------------+------------+------------+------------| | ArtistId | ArtistName | ActiveFrom | CountryId | +------------+------------+------------+------------+
例4–依存関係の確認
COL_NAME()
を使用する例を次に示します。 sys.sql_expression_dependencies
をチェックするクエリで 依存関係情報のシステムビュー。このビューは名前ではなく列IDを返すため、COL_NAME()
を使用します 名前を取得します。
SELECT OBJECT_NAME(referencing_id) AS [Referencing Entity], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Column] FROM sys.sql_expression_dependencies;
結果:
+----------------------+-----------------------+------------+ | Referencing Entity | referenced_minor_id | Column | |----------------------+-----------------------+------------| | uspGetClient | 0 | NULL | | uspGetClient | 0 | NULL | | uspGetOrdersByClient | 0 | NULL | | uspGetOrdersByClient | 0 | NULL | | uspGetOrdersByClient | 0 | NULL | | uspGetAlbumsByArtist | 0 | NULL | | chkClientCode | 1 | ClientCode | +----------------------+-----------------------+------------+
例5–WHERE句内
ここでは、COL_NAME()
を使用します WHERE
で機能する referenced_minor_id
の行が NULL
の 返されません。
SELECT OBJECT_NAME(referencing_id) AS [Referencing Entity], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Column] FROM sys.sql_expression_dependencies WHERE COL_NAME(referenced_id, referenced_minor_id) IS NOT NULL;
結果:
+----------------------+-----------------------+------------+ | Referencing Entity | referenced_minor_id | Column | |----------------------+-----------------------+------------| | chkClientCode | 1 | ClientCode | +----------------------+-----------------------+------------+