В SQL Server можете да използвате COL_NAME()
функция за връщане на името на колона въз основа на нейния идентификатор и идентификатора на родителската таблица.
Това може да бъде полезно при запитване към таблица, която съхранява само идентификатора на колоната и идентификатора на родителската таблица.
COL_NAME()
функцията изисква два аргумента:идентификатора на таблицата и идентификатора на колоната.
Синтаксис
Синтаксисът е така:
COL_NAME ( table_id , column_id )
Пример 1 – Основна употреба
Ето основен пример, за да демонстрирате как работи.
ИЗБЕРЕТЕ COL_NAME(885578193, 1) КАТО резултат;
Резултат:
+---------+| Резултат ||----------|| ArtistId |+----------+
В този случай върнах името на колона 1 от таблицата с идентификационен номер 885578193.
Пример 2 – Вземете идентификатора на таблицата
Ако знаете само името на таблицата, можете да използвате OBJECT_ID()
за да върне своя идентификатор въз основа на името на таблицата.
Случайно знам името на горната таблица, така че мога да променя предишния пример с това:
ИЗБЕРЕТЕ COL_NAME(OBJECT_ID('dbo.Artists'), 1) КАТО Резултат;
Резултат:
+---------+| Резултат ||----------|| ArtistId |+----------+
Ето го отново, но с включен ID на таблицата:
ИЗБЕРЕТЕ OBJECT_ID('dbo.Artists') КАТО [ИД на таблица], COL_NAME(OBJECT_ID('dbo.Artists'), 1) КАТО [Име на колона];
Резултат:
+-----------+--------------+| ID на таблицата | Име на колона ||------------+--------------|| 885578193 | ArtistId |+------------+--------------+
Пример 3 – Още колони
Тук добавям още няколко колони към изхода.
ИЗБЕРЕТЕ COL_NAME(OBJECT_ID('dbo.Artists'), 1) КАТО [Колона 1], COL_NAME(OBJECT_ID('dbo.Artists'), 2) КАТО [Колона 2], COL_NAME(OBJECT_ID('dbo.Artists') '), 3) КАТО [Колона 3], COL_NAME(OBJECT_ID('dbo.Artists'), 4) КАТО [Колона 4];
Резултат:
+------------+------------+-----------+------- -----+| Колона 1 | Колона 2 | Колона 3 | Колона 4 ||------------+-----------+-----------+------- -----|| ArtistId | Име на изпълнител | ActiveFrom | CountryId |+-----------+------------+-----------+-------- ----+
Пример 4 – Проверка на зависимости
Ето пример, в който използвам COL_NAME()
в заявка, която проверява sys.sql_expression_dependencies
системен изглед за информация за зависимостта. Този изглед връща идентификаторите на колоните, а не техните имена, така че използвам COL_NAME()
за да получите имената им.
ИЗБЕРЕТЕ OBJECT_NAME(referencing_id) КАТО [Референтен обект], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) AS [Column]FROM sys.sql_expression_dependencies;
Резултат:
+---------------------+----------------------- +-----------+| Референтен субект | препоръчан_незначителен_идентификатор | Колона ||---------------------+-----------------------+ ------------|| uspGetClient | 0 | NULL || uspGetClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetOrdersByClient | 0 | NULL || uspGetAlbumsByArtist | 0 | NULL || chkClientCode | 1 | Клиентски код |+---------------------+-----------------------+ ------------+
Пример 5 – В клауза WHERE
Тук използвам COL_NAME()
функция в WHERE
клауза, така че редовете с referenced_minor_id
от NULL
не се връщат.
ИЗБЕРЕТЕ OBJECT_NAME(referencing_id) КАТО [Референтен обект], referenced_minor_id, COL_NAME(referenced_id, referenced_minor_id) КАТО [Колона]FROM sys.sql_expression_dependenciesWHERE COL_NAME(referenced_id, referenced_minor_id)Резултат:
+---------------------+----------------------- +-----------+| Референтен субект | препоръчан_незначителен_идентификатор | Колона ||---------------------+-----------------------+ ------------|| chkClientCode | 1 | Клиентски код |+---------------------+-----------------------+ ------------+