Trong SQL Server, bạn có thể sử dụng COL_NAME()
hàm để trả về tên của một cột, dựa trên ID của nó và ID bảng mẹ của nó.
Điều này có thể hữu ích khi truy vấn một bảng chỉ lưu trữ ID cột và ID của bảng chính.
COL_NAME()
hàm yêu cầu hai đối số:ID bảng và ID cột.
Cú pháp
Cú pháp như sau:
COL_NAME ( table_id , column_id )
Ví dụ 1 - Cách sử dụng cơ bản
Dưới đây là một ví dụ cơ bản để chứng minh cách hoạt động của nó.
SELECT COL_NAME(885578193, 1) AS Result;
Kết quả:
+----------+ | Result | |----------| | ArtistId | +----------+
Trong trường hợp này, tôi đã trả lại tên của cột 1 từ bảng với ID là 885578193.
Ví dụ 2 - Lấy ID bảng
Nếu bạn chỉ biết tên của bảng, bạn có thể sử dụng OBJECT_ID()
để trả về ID của nó dựa trên tên bảng.
Tôi tình cờ biết tên của bảng trên, vì vậy tôi có thể thay đổi ví dụ trước đó thành sau:
SELECT COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS Result;
Kết quả:
+----------+ | Result | |----------| | ArtistId | +----------+
Đây là một lần nữa, nhưng với ID bảng được bao gồm:
SELECT OBJECT_ID('dbo.Artists') AS [Table ID], COL_NAME(OBJECT_ID('dbo.Artists'), 1) AS [Column Name];
Kết quả:
+------------+---------------+ | Table ID | Column Name | |------------+---------------| | 885578193 | ArtistId | +------------+---------------+
Ví dụ 3 - Nhiều cột hơn
Ở đây, tôi thêm một vài cột nữa vào đầu ra.
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];
Kết quả:
+------------+------------+------------+------------+ | Column 1 | Column 2 | Column 3 | Column 4 | |------------+------------+------------+------------| | ArtistId | ArtistName | ActiveFrom | CountryId | +------------+------------+------------+------------+
Ví dụ 4 - Kiểm tra sự phụ thuộc
Đây là một ví dụ mà tôi sử dụng COL_NAME()
trong một truy vấn kiểm tra sys.sql_expression_dependencies
chế độ xem hệ thống cho thông tin phụ thuộc. Chế độ xem này trả về ID cột thay vì tên của chúng, vì vậy tôi sử dụng COL_NAME()
để lấy tên của họ.
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;
Kết quả:
+----------------------+-----------------------+------------+ | 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 | +----------------------+-----------------------+------------+
Ví dụ 5 - Trong mệnh đề WHERE
Ở đây, tôi sử dụng COL_NAME()
chức năng trong một WHERE
mệnh đề sao cho các hàng có referenced_minor_id
trong tổng số NULL
không được trả lại.
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;
Kết quả:
+----------------------+-----------------------+------------+ | Referencing Entity | referenced_minor_id | Column | |----------------------+-----------------------+------------| | chkClientCode | 1 | ClientCode | +----------------------+-----------------------+------------+