Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Holen Sie sich den Namen einer Spalte aus ihrer ID in SQL Server:COL_NAME()

In SQL Server können Sie den COL_NAME() verwenden Funktion, um den Namen einer Spalte basierend auf ihrer ID und ihrer übergeordneten Tabellen-ID zurückzugeben.

Dies kann nützlich sein, wenn eine Tabelle abgefragt wird, die nur die Spalten-ID und die ID der übergeordneten Tabelle speichert.

Der COL_NAME() Die Funktion erfordert zwei Argumente:die Tabellen-ID und die Spalten-ID.

Syntax

Die Syntax sieht so aus:

COL_NAME ( Tabellen-ID , Spalten-ID )

Beispiel 1 – Grundlegende Verwendung

Hier ist ein einfaches Beispiel, um zu demonstrieren, wie es funktioniert.

SELECT COL_NAME(885578193, 1) AS Ergebnis;

Ergebnis:

+----------+| Ergebnis ||----------|| Künstler-ID |+----------+

In diesem Fall habe ich den Namen der Spalte 1 aus der Tabelle mit der ID 885578193 zurückgegeben.

Beispiel 2 – Abrufen der Tabellen-ID

Wenn Sie nur den Namen der Tabelle kennen, können Sie OBJECT_ID() verwenden um seine ID basierend auf dem Tabellennamen zurückzugeben.

Ich kenne zufällig den Namen der obigen Tabelle, also könnte ich das vorherige Beispiel wie folgt ändern:

SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS Ergebnis;

Ergebnis:

+----------+| Ergebnis ||----------|| Künstler-ID |+----------+

Hier ist es noch einmal, aber mit der enthaltenen Tabellen-ID:

SELECT OBJECT_ID('dbo.Artists') AS [Tabellen-ID], COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Spaltenname];

Ergebnis:

+------------+---------------+| Tabellen-ID | Spaltenname ||-----------+---------------|| 885578193 | ArtistId |+------------+---------------+

Beispiel 3 – Mehr Spalten

Hier füge ich der Ausgabe ein paar weitere Spalten hinzu.

SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Spalte 1], COL_NAME(OBJECT_ID('dbo.Artists'), 2) AS [Spalte 2], COL_NAME(OBJECT_ID('dbo.Artists'). '), 3) AS [Spalte 3], COL_NAME(OBJECT_ID('dbo.Artists'), 4) AS [Spalte 4];

Ergebnis:

+------------+------------+------------+------- -----+| Spalte 1 | Spalte 2 | Spalte 3 | Spalte 4 ||------------+-----------+------------+------- -----|| ArtistID | Künstlername | AktivVon | CountryId |+------------+------------+------------+-------- ----+

Beispiel 4 – Überprüfung von Abhängigkeiten

Hier ist ein Beispiel, in dem ich COL_NAME() verwende in einer Abfrage, die die sys.sql_expression_dependencies überprüft Systemansicht für Abhängigkeitsinformationen. Diese Ansicht gibt die Spalten-IDs statt ihrer Namen zurück, daher verwende ich COL_NAME() um ihre Namen zu erfahren.

SELECT OBJECT_NAME(referencing_id) AS [Referencing Entity], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Column]FROM sys.sql_expression_dependencies;

Ergebnis:

+---------------------+------------------------------- +------------+| Referenzierende Entität | referenced_minor_id | Spalte ||----------------------+----------------------+ ------------|| uspGetClient | 0 | NULL || uspGetClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetAlbumsByArtist | 0 | NULL || chkClientCode | 1 | ClientCode |+----------------------+-----------------------+ -------------+

Beispiel 5 – In einer WHERE-Klausel

Hier verwende ich den COL_NAME() Funktion in einem WHERE -Klausel, sodass Zeilen mit einer referenced_minor_id von NULL werden nicht zurückgegeben.

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_minor_id) IS NOT NULL;

Ergebnis:

+---------------------+------------------------------- +------------+| Referenzierende Entität | referenced_minor_id | Spalte ||----------------------+----------------------+ ------------|| chkClientCode | 1 | Kundencode |+----------------------+----------------------+ -------------+