この記事では、T-SQLを使用してSQLServerで計算列を作成する方法について説明します。
計算列 式を使用してその値を計算する仮想列です。式は通常、他の列のデータを使用します。計算列は、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 | +-------------+---------------+------------+---------+--------------+