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

Cột được tính toán trong SQL Server là gì?

Trong SQL Server, cột được tính toán là một cột ảo sử dụng một biểu thức để tính giá trị của nó.

Một cột được tính thường sẽ sử dụng dữ liệu từ các cột khác trong tính toán của nó. Nếu dữ liệu trong bất kỳ cột nào trong số đó được cập nhật, cột được tính toán sẽ tự động phản ánh cập nhật trong tính toán của nó.

Ví dụ về một cột được tính toán

+------------+-------------+------------+----------------+
| PersonID   | FirstName   | LastName   | FullName       |
|------------+-------------+------------+----------------|
| 1          | Homer       | Seinfeld   | Homer Seinfeld |
| 2          | Bart        | Costanza   | Bart Costanza  |
| 3          | Marge       | Kramer     | Marge Kramer   |
+------------+-------------+------------+----------------+

Trong ví dụ này, FullName cột là một cột được tính toán. Nó nối các giá trị từ FirstNameLastName cột để tính tên đầy đủ.

Nếu không có cột được tính, nếu bạn muốn chọn tên đầy đủ, bạn cần phải làm như sau:

SELECT FirstName + ' ' + LastName AS FullName
FROM Person;

Hoặc bạn có thể sử dụng CONCAT() chức năng, như thế này:

SELECT CONCAT(FirstName, ' ', LastName) AS FullName
FROM Person;

Mỗi khi bạn muốn chọn một tên đầy đủ từ bảng, bạn cần phải đưa phần nối vào truy vấn của mình.

Nhưng bằng cách sử dụng một cột được tính toán như cột ở trên, bạn có thể thực hiện điều này:

SELECT FullName
FROM Person;

Lợi ích của các cột được tính toán

Các cột được tính toán có thể tiết kiệm thời gian khi viết truy vấn, giảm lỗi và thậm chí cải thiện hiệu suất.

Các cột được tính toán có thể hữu ích nếu bạn thấy mình chạy đi chạy lại nhiều lần cùng một truy vấn, đặc biệt nếu truy vấn đó dựa trên các quy tắc nghiệp vụ hiếm khi thay đổi.

Cột được tính toán trong ví dụ trước có thể giúp chúng ta tiết kiệm rất nhiều thời gian trong tương lai, vì chúng ta sẽ không cần phải nối họ và tên mỗi khi chúng ta muốn chọn tên đầy đủ của ai đó.

Ví dụ về các trường hợp sử dụng

Ví dụ về nơi một cột được tính toán có thể hữu ích bao gồm:

  • Tính tuổi của một người, dựa trên ngày sinh của họ trong một cột khác
  • Kết hợp họ và tên, dựa trên việc họ ở trong một cột và họ ở một cột khác
  • Tính toán giá trị tồn kho của một sản phẩm, dựa trên số lượng sản phẩm trong kho trong một cột và giá ở một cột khác
  • Tính chỉ số BMI (Chỉ số khối cơ thể) của một người, dựa trên chiều cao và cân nặng của họ trong một cột khác
  • Tạo cột "Xếp hạng" để xếp hạng các hàng, dựa trên các giá trị trong các cột khác
  • Tính toán thời gian đua của các vận động viên marathon, dựa trên thời gian bắt đầu và thời gian kết thúc của họ trong các cột khác

Tính ổn định của các cột được tính toán

Một cột được tính toán không được lưu trữ vật lý trong bảng trừ khi nó được đánh dấu PERSISTED .

Nếu đó là không một cột được tính toán liên tục, quá trình tính toán sẽ diễn ra mỗi khi bảng được truy cập.

Nếu nó một cột được tính liên tục, giá trị đã tính được lưu trữ vật lý trong bảng. Có nghĩa là, nó không cần phải tính toán giá trị của nó mỗi khi bạn chạy một truy vấn. Nếu dữ liệu được cập nhật ở một trong các cột mà nó lấy giá trị của nó, thì giá trị của cột được tính toán sẽ được cập nhật và lưu trữ trong bảng. Điều này có thể giúp tăng hiệu suất.

Lưu ý rằng chỉ có thể tồn tại một cột được tính toán nếu nó có tính xác định. Nếu nó không xác định, bạn sẽ gặp lỗi nếu cố gắng duy trì nó.

Một không xác định là cột trả về các giá trị khác nhau ngay cả khi có cùng một đầu vào. Ví dụ:nếu bạn sử dụng ngày hiện tại trong tính toán của mình, giá trị sẽ khác mỗi ngày và nó sẽ được coi là không xác định.

Nếu bạn chỉ ghép tên và họ, thì điều đó sẽ mang tính xác định và bạn có thể giữ nguyên một cột như vậy.

Tạo một cột được tính toán

Bạn có thể tạo các cột được tính toán từ SSMS GUI hoặc bằng Transact-SQL.

Trong SSMS

Trong SSMS, trong khi trong Trình thiết kế bảng , tạo cột bạn muốn làm cột được tính toán (hoặc chỉ cần chọn nó nếu nó đã tồn tại), sau đó trong Thuộc tính cột , hãy nhập công thức của bạn vào Đặc điểm kỹ thuật cột được tính toán lĩnh vực tài sản.

Đừng lo lắng về việc cung cấp cho cột đã tính toán một kiểu dữ liệu - SQL Server sẽ cung cấp cho cột đó một kiểu dữ liệu dựa trên công thức của bạn.

Bạn cũng có thể chọn cho Là vẫn tồn tại nếu bạn ước.

Sử dụng T-SQL

Xem Tạo cột được tính toán trong SQL Server bằng T-SQL để biết ví dụ về cách tạo cột được tính bằng Transact-SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi varchar thành datetime trong SQL Server

  2. Các chỉ mục của SQL Server:Các yêu cầu chính, tác động đến hiệu suất và những cân nhắc

  3. Thêm Zeros dẫn đầu &theo sau trong SQL Server

  4. Nhóm theo cột và nhiều hàng thành một hàng nhiều cột

  5. Cách thay đổi một cột từ Null thành Not Null trong SQL Server