Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте изчислена колона в SQL Server с помощта на T-SQL

Тази статия демонстрира как да използвате T-SQL за създаване на изчислена колона в SQL Server.

изчислена колона е виртуална колона, която използва израз за изчисляване на стойността си. Изразът обикновено използва данни от други колони. Изчислена колона не се съхранява физически в таблицата, освен ако не е маркирана PERSISTED .

Пример 1 – Създайте таблица с изчислена колона

Ето пример за създаване на таблица с изчислена колона, вмъкване на данни и след това избиране на съдържанието на таблицата.

CREATE TABLE Products
  (
    ProductID int IDENTITY (1,1) NOT NULL,
    ProductName varchar(255), 
    Quantity smallint,
    Price money,
    TotalValue AS Quantity * Price
  );

INSERT INTO Products (ProductName, Quantity, Price)
VALUES 
  ('Hammer', 5, 10),
  ('Corkscrew', 2, 7.50),
  ('Kettle', 3, 25.15);

SELECT *
FROM Products;

Резултат:

+-------------+---------------+------------+---------+--------------+
| ProductID   | ProductName   | Quantity   | Price   | TotalValue   |
|-------------+---------------+------------+---------+--------------|
| 1           | Hammer        | 5          | 10.0000 | 50.0000      |
| 2           | Corkscrew     | 2          | 7.5000  | 15.0000      |
| 3           | Kettle        | 3          | 25.1500 | 75.4500      |
+-------------+---------------+------------+---------+--------------+

В този случай последната колона е изчислена колона. Той умножава колоната количество по колоната цена. Това ни позволява да получим общата стойност на продукта, който в момента е на склад.

Пример 2 – Създаване на постоянна изчислена колона

Можете да създадете постоянна изчислена колона, като добавите PERSISTED аргумент. Това ще доведе до това, че изчислената стойност ще бъде физически съхранена в таблицата. Ако не се запази, тогава стойността се изчислява всеки път, когато четете изчислената колона.

Ето същия пример за код като предишния, с изключение на това, че създавам постоянна изчислена колона:

CREATE TABLE Products
  (
    ProductID int IDENTITY (1,1) NOT NULL,
    ProductName varchar(255), 
    Quantity smallint,
    Price money,
    TotalValue AS Quantity * Price PERSISTED
  );

Единствената разлика е PERSISTED аргумент.

Пример 3 – Актуализиране на стойност

Сега, ако стойността се актуализира в Quantity или Price колони, това ще повлияе на общата стойност, върната от изчислената колона. Това ще се случи независимо дали колоната е запазена или не.

Ако някой купи чук например, това ще повлияе на общата стойност, върната от изчислената колона:

UPDATE Products
SET Quantity = 4
WHERE ProductId = 1;

SELECT *
FROM Products;

Резултат:

+-------------+---------------+------------+---------+--------------+
| ProductID   | ProductName   | Quantity   | Price   | TotalValue   |
|-------------+---------------+------------+---------+--------------|
| 1           | Hammer        | 4          | 10.0000 | 40.0000      |
| 2           | Corkscrew     | 2          | 7.5000  | 15.0000      |
| 3           | Kettle        | 3          | 25.1500 | 75.4500      |
+-------------+---------------+------------+---------+--------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да експортирам полето за изображение във файл?

  2. Инсталиране и конфигуриране на SQL Server Log Shipping &Disaster Recovery -4

  3. sql server 2008 management studio не проверява синтаксиса на моята заявка

  4. Как да покажете заявка и резултати в отделен раздел в SQL Server Management Studio (SSMS) - SQL Server / TSQL урок, част 15

  5. Получете привилегии на колона за таблица в SQL Server с помощта на T-SQL:sp_column_privileges