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