In SQL Server kunt u de COL_NAME()
. gebruiken functie om de naam van een kolom te retourneren, gebaseerd op de ID en de bovenliggende tabel-ID.
Dit kan handig zijn bij het opvragen van een tabel waarin alleen de kolom-ID en de ID van de bovenliggende tabel zijn opgeslagen.
De COL_NAME()
functie vereist twee argumenten:de tabel-ID en de kolom-ID.
Syntaxis
De syntaxis gaat als volgt:
COL_NAME ( table_id , column_id )
Voorbeeld 1 – Basisgebruik
Hier is een eenvoudig voorbeeld om te laten zien hoe het werkt.
SELECT COL_NAME(885578193, 1) ALS resultaat;
Resultaat:
+----------+| Resultaat ||----------|| ArtistId |+----------+
In dit geval heb ik de naam van kolom 1 uit de tabel geretourneerd met een ID van 885578193.
Voorbeeld 2 – De tabel-ID ophalen
Als u alleen de naam van de tabel weet, kunt u OBJECT_ID()
. gebruiken om zijn ID te retourneren op basis van de tabelnaam.
Ik weet toevallig de naam van de bovenstaande tabel, dus ik zou het vorige voorbeeld hierin kunnen veranderen:
SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) ALS resultaat;
Resultaat:
+----------+| Resultaat ||----------|| ArtistId |+----------+
Hier is het weer, maar met de tabel-ID erbij:
SELECT OBJECT_ID('dbo.Artiesten') AS [Tabel-ID], COL_NAME(OBJECT_ID('dbo.Artiesten'), 1) AS [Kolomnaam];
Resultaat:
+------------+---------------+| Tabel-ID | Kolomnaam ||------------+---------------|| 885578193 | ArtistId |+------------+---------------+
Voorbeeld 3 – Meer kolommen
Hier voeg ik nog een paar kolommen toe aan de uitvoer.
SELECT COL_NAME(OBJECT_ID('dbo.Artiesten'), 1) AS [Kolom 1], COL_NAME(OBJECT_ID('dbo.Artiesten'), 2) AS [Kolom 2], COL_NAME(OBJECT_ID('dbo.Artiesten) '), 3) AS [Kolom 3], COL_NAME(OBJECT_ID('dbo.Artiesten'), 4) AS [Kolom 4];
Resultaat:
+------------+------------+------------+------- -----+| Kolom 1 | Kolom 2 | Kolom 3 | Kolom 4 ||------------+------------+------------+------- -----|| Artiest-ID | Artiestnaam | ActiefVan | Landnummer |+------------+------------+------------+-------- ----+
Voorbeeld 4 – Afhankelijkheden controleren
Hier is een voorbeeld waarbij ik COL_NAME()
. gebruik in een query die de sys.sql_expression_dependencies
. controleert systeemweergave voor afhankelijkheidsinformatie. Deze weergave retourneert de kolom-ID's in plaats van hun namen, dus ik gebruik COL_NAME()
om hun namen te krijgen.
SELECT OBJECT_NAME(referencing_id) AS [Referentie-entiteit], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Kolom]FROM sys.sql_expression_dependencies;
Resultaat:
+----------------------+----------------------- +------------+| Verwijzende entiteit | referenced_minor_id | Kolom ||----------------------+-----------------------+ ------------|| uspGetClient | 0 | NULL || uspGetClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetAlbumsByArtiest | 0 | NULL || chkClientCode | 1 | ClientCode |+----------------------+-----------------------+ ------------+
Voorbeeld 5 – In een WHERE-clausule
Hier gebruik ik de COL_NAME()
functie in een WHERE
clausule zodat rijen met een referenced_minor_id
van NULL
worden niet geretourneerd.
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 IS NORM);Resultaat:
+----------------------+----------------------- +------------+| Verwijzende entiteit | referenced_minor_id | Kolom ||----------------------+-----------------------+ ------------|| chkClientCode | 1 | ClientCode |+----------------------+-----------------------+ ------------+