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

SQL ServerのIDから列の名前を取得します:COL_NAME()

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

    1. OracleEBSパスワードの有効期限/ポリシー/設定に関する便利なクエリ

    2. MySQLストアドプロシージャ

    3. 同じSQLステートメントで複数のテーブルから削除することは可能ですか?

    4. 複数の日時値の合計を取得するにはどうすればよいですか?