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

Thay đổi một cột hiện có thành một cột được tính toán trong SQL Server (Ví dụ T-SQL)

Bài viết này trình bày cách sử dụng T-SQL để thay đổi cột hiện có thành cột được tính toán trong SQL Server.

Một 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ó. Biểu thức thường sẽ sử dụng dữ liệu từ các cột khác. 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 .

Ví dụ 1 - Tạo Bảng KHÔNG CÓ Cột Tính toán

Trước tiên, hãy tạo một bảng không có một cột được tính toán.

 TẠO BẢNG Person (PersonID int IDENTITY (1,1) NOT NULL, FirstName varchar (70), LastName varchar (70), FullName varchar (140)); INSERT INTO Person (FirstName, LastName, FullName) VALUES (' Homer ',' Seinfeld ',' Homer Seinfeld '), (' Bart ',' Costanza ',' Bart Costanza '), (' Marge ',' Kramer ',' Marge Kramer '); CHỌN * TỪ NGƯỜI;  

Kết quả:

 + ------------ + ------------- + ------------ + ------ ---------- + | ID người | FirstName | LastName | FullName || ------------ + ------------- + ------------ + ------- --------- || 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Kramer | Marge Kramer | + ------------ + ------------- + ------------ + ------ ---------- + 

Bạn có thể thấy rằng tôi đang tăng gấp đôi khi tôi chèn dữ liệu. Tên đầy đủ là sự kết hợp của tên và họ và tôi đang nhập lại dữ liệu này cho mọi hàng.

Điều này cũng có thể gây ra sự cố khi cập nhật bảng. Tôi cần nhớ cập nhật hai cột bất cứ khi nào ai đó thay đổi tên họ hoặc tên thứ hai (và ba cột nếu họ đã thay đổi cả hai).

Đây là một ứng cử viên tốt cho một cột được tính toán.

Ví dụ 2 - Thay đổi Cột thành Cột được Tính toán

Để thay đổi một cột thành một cột được tính toán, trước tiên bạn cần thả cột đó xuống, sau đó tạo nó với định nghĩa mới.

Đây là cách thay đổi FullName thành một cột được tính toán.

 ALTER TABLE Person DROP COLUMN FullName; ALTER TABLE Person ADD FullName AS (CONCAT (FirstName, '', LastName)); 

Chúng tôi vừa “thay đổi” cột có tên là FullName vào một cột được tính toán. Nó nối FirstNameLastName cột.

Đây là những gì sẽ xảy ra khi chúng tôi chọn nội dung của bảng:

 CHỌN * TỪ NGƯỜI; 

Kết quả:

 + ------------ + ------------- + ------------ + ------ ---------- + | ID người | FirstName | LastName | FullName || ------------ + ------------- + ------------ + ------- --------- || 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Kramer | Marge Kramer | + ------------ + ------------- + ------------ + ------ ---------- + 

Ví dụ 3 - Cập nhật giá trị

Bây giờ, nếu một giá trị được cập nhật trong FirstName hoặc LastName , điều này sẽ ảnh hưởng đến giá trị được trả về bởi cột được tính toán. Không cần cập nhật nó trong hai cột.

Ví dụ:

 CẬP NHẬT PersonSET LastName ='Bourne'WHERE PersonId =3; CHỌN * TỪ NGƯỜI; 

Kết quả:

 + ------------ + ------------- + ------------ + ------ ---------- + | ID người | FirstName | LastName | FullName || ------------ + ------------- + ------------ + ------- --------- || 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Bourne | Marge Bourne | + ------------ + ------------- + ------------ + ------ ---------- + 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. hành vi nối nvarchar / chỉ mục / nvarchar (tối đa) không thể giải thích được

  2. Cách sử dụng SQL Server HierarchyID thông qua các ví dụ đơn giản

  3. @@ ROWCOUNT - Nhận số lượng hàng bị ảnh hưởng bởi câu lệnh cuối cùng trong SQL Server

  4. Làm thế nào để ghi bằng BCP vào một SQL Server từ xa?

  5. Di chuyển dữ liệu SQL từ bảng này sang bảng khác