Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Obtenir le nom d'une colonne à partir de son ID dans SQL Server :COL_NAME()

Dans SQL Server, vous pouvez utiliser le COL_NAME() pour renvoyer le nom d'une colonne, en fonction de son ID et de son ID de table parent.

Cela peut être utile lors de l'interrogation d'une table qui ne stocke que l'ID de la colonne et l'ID de la table parent.

Le COL_NAME() La fonction nécessite deux arguments :l'ID de la table et l'ID de la colonne.

Syntaxe

La syntaxe ressemble à ceci :

COL_NAME ( table_id , column_id )

Exemple 1 - Utilisation de base

Voici un exemple de base pour montrer comment cela fonctionne.

SELECT COL_NAME(885578193, 1) AS Result;

Résultat :

+----------+
| Result   |
|----------|
| ArtistId |
+----------+

Dans ce cas, j'ai renvoyé le nom de la colonne 1 de la table avec un ID de 885578193.

Exemple 2 - Obtenir l'ID de table

Si vous ne connaissez que le nom de la table, vous pouvez utiliser OBJECT_ID() pour renvoyer son ID en fonction du nom de la table.

Il se trouve que je connais le nom de la table ci-dessus, donc je pourrais remplacer l'exemple précédent par ceci :

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

Résultat :

+----------+
| Result   |
|----------|
| ArtistId |
+----------+

Le voici à nouveau, mais avec l'ID de table inclus :

SELECT 
  OBJECT_ID('dbo.Artists') AS [Table ID],
  COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Column Name];

Résultat :

+------------+---------------+
| Table ID   | Column Name   |
|------------+---------------|
| 885578193  | ArtistId      |
+------------+---------------+

Exemple 3 – Plus de colonnes

Ici, j'ajoute quelques colonnes supplémentaires à la sortie.

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];

Résultat :

+------------+------------+------------+------------+
| Column 1   | Column 2   | Column 3   | Column 4   |
|------------+------------+------------+------------|
| ArtistId   | ArtistName | ActiveFrom | CountryId  |
+------------+------------+------------+------------+

Exemple 4 - Vérification des dépendances

Voici un exemple où j'utilise COL_NAME() dans une requête qui vérifie les sys.sql_expression_dependencies vue système pour les informations de dépendance. Cette vue renvoie les ID de colonne plutôt que leurs noms, j'utilise donc COL_NAME() pour obtenir leurs noms.

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;

Résultat :

+----------------------+-----------------------+------------+
| 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 |
+----------------------+-----------------------+------------+

Exemple 5 – Dans une clause WHERE

Ici, j'utilise le COL_NAME() fonction dans un WHERE clause de sorte que les lignes avec un referenced_minor_id de NULL ne sont pas retournés.

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;

Résultat :

+----------------------+-----------------------+------------+
| Referencing Entity   | referenced_minor_id   | Column     |
|----------------------+-----------------------+------------|
| chkClientCode        | 1                     | ClientCode |
+----------------------+-----------------------+------------+