In SQL Server puoi utilizzare COL_NAME() funzione per restituire il nome di una colonna, in base al suo ID e al suo ID tabella padre.
Questo può essere utile quando si esegue una query su una tabella che memorizza solo l'ID colonna e l'ID della tabella padre.
Il COL_NAME() La funzione richiede due argomenti:l'ID tabella e l'ID colonna.
Sintassi
La sintassi è questa:
COL_NAME ( table_id , column_id )
Esempio 1 – Utilizzo di base
Ecco un esempio di base per dimostrare come funziona.
SELECT COL_NAME(885578193, 1) AS Result;
Risultato:
+----------+ | Result | |----------| | ArtistId | +----------+
In questo caso, ho restituito il nome della colonna 1 dalla tabella con ID 885578193.
Esempio 2:ottieni l'ID tabella
Se conosci solo il nome della tabella, puoi utilizzare OBJECT_ID() per restituire il suo ID in base al nome della tabella.
Mi capita di conoscere il nome della tabella sopra, quindi potrei cambiare l'esempio precedente in questo:
SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS Result;
Risultato:
+----------+ | Result | |----------| | ArtistId | +----------+
Eccolo di nuovo, ma con l'ID tabella incluso:
SELECT
OBJECT_ID('dbo.Artists') AS [Table ID],
COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Column Name];
Risultato:
+------------+---------------+ | Table ID | Column Name | |------------+---------------| | 885578193 | ArtistId | +------------+---------------+
Esempio 3:più colonne
Qui, aggiungo alcune altre colonne all'output.
SELECT
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 [Column 3],
COL_NAME(OBJECT_ID('dbo.Artists'), 4) AS [Column 4];
Risultato:
+------------+------------+------------+------------+ | Column 1 | Column 2 | Column 3 | Column 4 | |------------+------------+------------+------------| | ArtistId | ArtistName | ActiveFrom | CountryId | +------------+------------+------------+------------+
Esempio 4 – Verifica delle dipendenze
Ecco un esempio in cui utilizzo COL_NAME() in una query che controlla sys.sql_expression_dependencies vista di sistema per informazioni sulle dipendenze. Questa vista restituisce gli ID delle colonne anziché i loro nomi, quindi utilizzo COL_NAME() per ottenere i loro nomi.
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;
Risultato:
+----------------------+-----------------------+------------+ | Referencing Entity | referenced_minor_id | Column | |----------------------+-----------------------+------------| | uspGetClient | 0 | NULL | | uspGetClient | 0 | NULL | | uspGetOrdersByClient | 0 | NULL | | uspGetOrdersByClient | 0 | NULL | | uspGetOrdersByClient | 0 | NULL | | uspGetAlbumsByArtist | 0 | NULL | | chkClientCode | 1 | ClientCode | +----------------------+-----------------------+------------+
Esempio 5 – In una clausola WHERE
Qui uso il COL_NAME() funzione in un WHERE clausola in modo che righe con un referenced_minor_id di NULL non vengono restituiti.
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
WHERE COL_NAME(referenced_id, referenced_minor_id) IS NOT NULL;
Risultato:
+----------------------+-----------------------+------------+ | Referencing Entity | referenced_minor_id | Column | |----------------------+-----------------------+------------| | chkClientCode | 1 | ClientCode | +----------------------+-----------------------+------------+