I SQL Server kan du använda COL_NAME()
funktion för att returnera en kolumns namn, baserat på dess ID och dess överordnade tabell-ID.
Detta kan vara användbart när du frågar efter en tabell som bara lagrar kolumn-ID och den överordnade tabellens ID.
COL_NAME()
funktionen kräver två argument:tabell-ID och kolumn-ID.
Syntax
Syntaxen ser ut så här:
COL_NAME ( table_id , column_id )
Exempel 1 – Grundläggande användning
Här är ett grundläggande exempel för att visa hur det fungerar.
VÄLJ COL_NAME(885578193, 1) SOM Resultat;
Resultat:
+----------+| Resultat ||--------|| ArtistId |+----------+
I det här fallet returnerade jag namnet på kolumn 1 från tabellen med ID:t 885578193.
Exempel 2 – Hämta tabell-ID
Om du bara vet namnet på tabellen kan du använda OBJECT_ID()
för att returnera dess ID baserat på tabellnamnet.
Jag råkar känna till namnet på tabellen ovan, så jag kunde ändra det föregående exemplet till detta:
SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) SOM Resultat;
Resultat:
+----------+| Resultat ||--------|| ArtistId |+----------+
Här är den igen, men med tabell-ID:
VÄLJ OBJECT_ID('dbo.Artists') AS [Table ID], COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Column Name];
Resultat:
+------------+--------------+| Tabell ID | Kolumnnamn ||-------------------------------|| 885578193 | ArtistId |+------------+--------------+
Exempel 3 – Fler kolumner
Här lägger jag till några fler kolumner till utdata.
VÄLJ 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 [kolumn 3], COL_NAME(OBJECT_ID('dbo.Artists'), 4) AS [kolumn 4];
Resultat:
+------------+-------------+-------+------- -----+| Kolumn 1 | Kolumn 2 | Kolumn 3 | Kolumn 4 ||------------+------------+------------+------- -----|| ArtistId | Artistnamn | AktivFrån | CountryId |+------------+------------+----------------+-------- ----+
Exempel 4 – Kontrollera beroenden
Här är ett exempel där jag använder COL_NAME()
i en fråga som kontrollerar sys.sql_expression_dependencies
systemvy för beroendeinformation. Den här vyn returnerar kolumn-ID:n snarare än deras namn, så jag använder COL_NAME()
för att få deras namn.
VÄLJ OBJECT_NAME(referensing_id) AS [Referencing Entity], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Column]FROM sys.sql_expression_dependencies;
Resultat:
+-----------------------+------------------------------ +------------+| Refererande enhet | refererat_minor_id | Kolumn ||-----------------------+-----------------------------+ ------------|| uspGetClient | 0 | NULL || uspGetClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetAlbumsByArtist | 0 | NULL || chkClientCode | 1 | Klientkod |+----------------------+----------------------------+ ------------+
Exempel 5 – I en WHERE-klausul
Här använder jag COL_NAME()
funktion i en WHERE
sats så att rader med ett referenced_minor_id
av NULL
returneras inte.
VÄLJ OBJECT_NAME(referensing_id) AS [Referencing Entity], refered_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Column]FRÅN sys.sql_expression_dependenciesWHERE COL_NAME(referens_id, refererat_minor_id) ÄR INTE NULL;>Resultat:
+-----------------------+------------------------------ +------------+| Refererande enhet | refererat_minor_id | Kolumn ||-----------------------+-----------------------------+ ------------|| chkClientCode | 1 | Klientkod |+----------------------+----------------------------+ ------------+