sql >> Databáze >  >> RDS >> Sqlserver

Získejte název sloupce z jeho ID na serveru SQL:COL_NAME()

V SQL Server můžete použít COL_NAME() funkce, která vrátí název sloupce na základě jeho ID a ID nadřazené tabulky.

To může být užitečné při dotazování na tabulku, která ukládá pouze ID sloupce a ID nadřazené tabulky.

COL_NAME() Funkce vyžaduje dva argumenty:ID tabulky a ID sloupce.

Syntaxe

Syntaxe vypadá takto:

COL_NAME ( table_id , column_id )

Příklad 1 – Základní použití

Zde je základní příklad, který demonstruje, jak to funguje.

SELECT COL_NAME(885578193, 1) AS Result;

Výsledek:

+-----------+| Výsledek ||-----------|| ArtistId |+----------+

V tomto případě jsem vrátil název sloupce 1 z tabulky s ID 885578193.

Příklad 2 – Získání ID tabulky

Pokud znáte pouze název tabulky, můžete použít OBJECT_ID() vrátit jeho ID na základě názvu tabulky.

Náhodou znám název výše uvedené tabulky, takže bych mohl změnit předchozí příklad na tento:

SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS Result;

Výsledek:

+-----------+| Výsledek ||-----------|| ArtistId |+----------+

Tady je to znovu, ale včetně ID tabulky:

SELECT OBJECT_ID('dbo.Artists') AS [ID tabulky], COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Název sloupce];

Výsledek:

+------------+---------------+| ID tabulky | Název sloupce ||------------+---------------|| 885578193 | ArtistId |+------------+---------------+

Příklad 3 – Více sloupců

Zde přidám do výstupu několik dalších sloupců.

SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Sloupec 1], COL_NAME(OBJECT_ID('dbo.Artists'), 2) AS [Sloupec 2], COL_NAME(OBJECT_ID('dbo.Artists) '), 3) AS [Sloupec 3], COL_NAME(OBJECT_ID('dbo.Artists'), 4) AS [Sloupec 4];

Výsledek:

+------------+------------+------------+------- -----+| Sloupec 1 | Sloupec 2 | Sloupec 3 | Sloupec 4 ||------------+------------+------------+------- -----|| ArtistId | Jméno umělce | AktivníOd | CountryId |+------------+------------+------------+-------- ----+

Příklad 4 – Kontrola závislostí

Zde je příklad, kdy používám COL_NAME() v dotazu, který kontroluje sys.sql_expression_dependencies systémové zobrazení pro informace o závislostech. Toto zobrazení vrací ID sloupců, nikoli jejich názvy, takže používám COL_NAME() získat jejich jména.

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;

Výsledek:

+----------------------+----------------------- +-------------+| Odkazující entita | referenced_minor_id | Sloupec ||----------------------+-----------------------+ ------------|| uspGetClient | 0 | NULL || uspGetClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetAlbumsByArtist | 0 | NULL || chkClientCode | 1 | ClientCode |+----------------------+-----------------------+ ------------+

Příklad 5 – V klauzuli WHERE

Zde používám COL_NAME() funkce v WHERE klauzule tak, aby řádky s referenced_minor_id z NULL nejsou vráceny.

SELECT OBJECT_NAME(referencing_id) AS [Referencing Entity], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Column]FROM sys.sql_expression_dependenciesWHERE COL_NAME(referenced_id, referenced_minor_id); NENÍ 

Výsledek:

+----------------------+----------------------- +-------------+| Odkazující entita | referenced_minor_id | Sloupec ||----------------------+-----------------------+ ------------|| chkClientCode | 1 | ClientCode |+----------------------+-----------------------+ ------------+

  1. Optimalizace dotazů SQL:Doporučené postupy pro lepší výkon

  2. Jak převést na velká písmena v MariaDB

  3. Jak odstranit nežádoucí úvodní znaky z řetězce v MySQL

  4. Jaký typ JOIN použít