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

Trả lại danh sách các cột được tính toán trong SQL Server

Trong SQL Server, có một số dạng xem danh mục hệ thống cho phép bạn lấy danh sách các cột được tính toán trong cơ sở dữ liệu.

Một trong những chế độ xem này được gọi là sys.computed_columns . Cái kia là sys.columns .

Chế độ xem sys.computed_columns

sys.computed_columns dạng xem danh mục hệ thống chứa một hàng cho mỗi cột được tính toán trong cơ sở dữ liệu. Do đó, bạn có thể chạy một truy vấn đơn giản để lấy danh sách các cột được tính toán.

SELECT 
  OBJECT_NAME(object_id) AS [Parent],
  name AS [Computed Column],
  definition,
  is_persisted
FROM sys.computed_columns;

Kết quả:

+----------+-------------------+--------------------------------------+----------------+
| Parent   | Computed Column   | definition                           | is_persisted   |
|----------+-------------------+--------------------------------------+----------------|
| Person   | FullName          | (concat([FirstName],' ',[LastName])) | 0              |
| Products | TotalValue        | ([Quantity]*[Price])                 | 1              |
+----------+-------------------+--------------------------------------+----------------+

Hầu hết các cột của chế độ xem này được kế thừa từ sys.columns lượt xem. Tôi chỉ đưa vào đây một số ít.

Một trong những lợi ích của chế độ xem này đối với sys.columns nghĩa là nó trả về định nghĩa của cột được tính toán, có thể hữu ích tùy theo tình huống. Nó cũng bao gồm is_persisted cờ, cho bạn biết liệu cột đã tính có được duy trì hay không. Nếu cột vẫn tồn tại, giá trị đã tính của cột được lưu trữ vật lý trong bảng. Nếu không, nó được tính tại thời điểm bạn truy vấn cột.

Chế độ xem sys.columns

Bạn cũng có thể chạy một truy vấn đối với sys.columns để trả về các cột đã tính. Nếu bạn làm điều này, bạn sẽ cần lọc kết quả để chỉ bao gồm các cột được tính toán. Bạn có thể thực hiện việc này với WHERE mệnh đề trên is_computed cột.

Ví dụ:

SELECT 
  OBJECT_NAME(object_id) as Parent,
  name AS [Computed Column]
FROM sys.columns
WHERE is_computed = 1;

Kết quả:

+----------+-------------------+
| Parent   | Computed Column   |
|----------+-------------------|
| Person   | FullName          |
| Products | TotalValue        |
+----------+-------------------+

Chế độ xem này không chứa definition , is_persisted hoặc uses_database_collation cột sys.computed_columns chứa.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Những sai lầm phổ biến của DBA trong MS SQL Server

  2. Tạo SQL Tạo tập lệnh cho các bảng hiện có với Truy vấn

  3. Tính tổng số đang chạy với mệnh đề OVER và mệnh đề PARTITION BY trong SQL Server

  4. Cách nhanh nhất để chạy cùng một truy vấn nhiều lần trong SQL Server

  5. 11 cách lấy khóa chính trong SQL Server (ví dụ T-SQL)