sql >> Databasteknik >  >> RDS >> Sqlserver

Hämta en kolumns namn från dess ID i SQL Server:COL_NAME()

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

  1. SQLite MAX

  2. Förlorade anslutningen till MySQL-servern vid "läsning av initialt kommunikationspaket", systemfel:0

  3. Var lagrar PostgreSQL konfigurations-/conf-filer?

  4. Mest effektiva T-SQL sättet att vaddera en varchar till vänster till en viss längd?