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