sql >> Database teknologi >  >> RDS >> Sqlserver

Hent en kolonnes navn fra dens ID i SQL Server:COL_NAME()

I SQL Server kan du bruge COL_NAME() funktion til at returnere en kolonnes navn baseret på dens id og dens overordnede tabel-id.

Dette kan være nyttigt, når du forespørger i en tabel, der kun gemmer kolonne-id'et og den overordnede tabels id.

COL_NAME() Funktionen kræver to argumenter:tabel-id'et og kolonne-id'et.

Syntaks

Syntaksen ser sådan ud:

COL_NAME ( table_id , column_id )

Eksempel 1 – Grundlæggende brug

Her er et grundlæggende eksempel for at demonstrere, hvordan det virker.

VÆLG COL_NAME(885578193, 1) SOM resultat;

Resultat:

+----------+| Resultat ||--------|| ArtistId |+----------+

I dette tilfælde returnerede jeg navnet på kolonne 1 fra tabellen med et ID på 885578193.

Eksempel 2 – Hent tabel-id'et

Hvis du kun kender navnet på tabellen, kan du bruge OBJECT_ID() for at returnere dens ID baseret på tabelnavnet.

Jeg kender tilfældigvis navnet på ovenstående tabel, så jeg kunne ændre det forrige eksempel til dette:

SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) SOM resultat;

Resultat:

+----------+| Resultat ||--------|| ArtistId |+----------+

Her er den igen, men med tabel-ID inkluderet:

VÆLG OBJECT_ID('dbo.Artists') AS [Tabel ID], COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Column Name];

Resultat:

+------------+--------------+| Tabel ID | Kolonnenavn ||-------------------------------|| 885578193 | ArtistId |+------------+--------------+

Eksempel 3 – Flere kolonner

Her tilføjer jeg nogle flere kolonner til outputtet.

VÆLG 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 [Kolonne 3], COL_NAME(OBJECT_ID('dbo.Artists'), 4) AS [Kolonne 4];

Resultat:

+------------+----------------+------- -----+| Kolonne 1 | Kolonne 2 | Kolonne 3 | Kolonne 4 ||------------------------------------------ -----|| ArtistId | Kunstnernavn | Aktiv Fra | CountryId |+------------+------------+------------+-------- ----+

Eksempel 4 – Kontrol af afhængigheder

Her er et eksempel, hvor jeg bruger COL_NAME() i en forespørgsel, der kontrollerer sys.sql_expression_dependencies systemvisning for afhængighedsoplysninger. Denne visning returnerer kolonne-id'erne i stedet for deres navne, så jeg bruger COL_NAME() for at få deres navne.

VÆLG OBJECT_NAME(reference_id) AS [Referencing Entity], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Column]FROM sys.sql_expression_dependencies;

Resultat:

+-----------------------+------------------------------ +------------+| Referenceenhed | referenced_minor_id | Kolonne ||-----------------------+----------------------------+ ------------|| uspGetClient | 0 | NULL || uspGetClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetAlbumsByArtist | 0 | NULL || chkClientCode | 1 | Klientkode |+-----------------------+----------------------------+ ------------+

Eksempel 5 – I en WHERE-klausul

Her bruger jeg COL_NAME() funktion i en WHERE klausul, så rækker med et referenced_minor_id af NULL returneres ikke.

VÆLG OBJECT_NAME(reference_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) ER IKKE 

Resultat:

+-----------------------+------------------------------ +------------+| Referenceenhed | referenced_minor_id | Kolonne ||-----------------------+-----------------------------+ ------------|| chkClientCode | 1 | Klientkode |+-----------------------+----------------------------+ ------------+

  1. Konverter Unixtime til Datetime SQL (Oracle)

  2. Dårlig standby

  3. Hvad betyder select count(1) fra table_name på alle databasetabeller?

  4. Kommandoer ude af synkronisering; du kan ikke køre denne kommando nu