Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Lấy tên của một cột từ ID của nó trong SQL Server:COL_NAME ()

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cuộc gọi MS Access thủ tục SQL Server được lưu trữ

  2. SQL:phân tích cú pháp họ, tên đệm và họ từ trường tên đầy đủ

  3. Cách kiểm tra xem một cột được tính toán có "Cố định" trong SQL Server hay không

  4. Cách gửi kết quả truy vấn qua email trong SQL Server (T-SQL)

  5. Tại sao máy chủ sql lưu trữ các ký tự dấu chấm hỏi thay vì các ký tự tiếng Nhật trong các trường NVarchar?