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 | +----------------------+-----------------------+------------+