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 IKKEResultat:
+-----------------------+------------------------------ +------------+| Referenceenhed | referenced_minor_id | Kolonne ||-----------------------+-----------------------------+ ------------|| chkClientCode | 1 | Klientkode |+-----------------------+----------------------------+ ------------+