Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
A számított oszlop olyan virtuális oszlop, amely nem fizikailag van tárolva a táblában, kivéve, ha az oszlop PERSISTEDvan megjelölve. A számított oszlopkifejezések más oszlopok adataival kiszámíthatják annak az oszlopnak az értékét, amelyhez tartozik. Az SQL Serverben egy számítási oszlop kifejezését az SQL Server Management Studio (SSMS) vagy a Transact-SQL (T-SQL) használatával adhatja meg.
Limitations
A számított oszlop nem használható
DEFAULTvagyFOREIGN KEYkényszerdefinícióként vagyNOT NULLkényszerdefinícióval. Ha azonban a számított oszlop értékét determinisztikus kifejezés határozza meg, és az eredmény adattípusa engedélyezett az indexoszlopokban, a számított oszlop használható kulcsoszlopként egy indexben, vagy bármelyPRIMARY KEYvagyUNIQUEkényszer részeként.Ha például a tábla egész számokat
aésbtartalmaz, akkor aa + bként definiált számított oszlop indexelhető, de aa + DATEPART(dd, GETDATE())definiált számított oszlop nem indexelhető, mert az érték a későbbi meghívásokban változhat.A számított oszlop nem lehet az INSERT vagy AZ UPDATE utasítás célja.
SET QUOTED_IDENTIFIER-nakON-nek kell lennie, amikor indexeket hoz létre vagy módosít számított oszlopokon vagy indexelt nézeteken. További információ: SET QUOTED_IDENTIFIER (Transact-SQL).
Permissions
A táblához ALTER jogosultság szükséges.
Az SQL Server Management Studio használata
Új számított oszlop hozzáadása
Az Object Explorerterületen bontsa ki azt a táblát, amelyhez hozzá szeretné adni az új számított oszlopot. Kattintson a jobb gombbal Oszlopok elemre, és válassza Új oszloplehetőséget.
Adja meg az oszlop nevét, és fogadja el az alapértelmezett adattípust (nchar(10)). Az adatbázismotor úgy határozza meg a számított oszlop adattípusát, hogy az adattípus-elsőbbségi szabályokat alkalmazza a képletben megadott kifejezésekre. Ha például a képlet egy pénz típusú oszlopra és egy inttípusú oszlopra hivatkozik, akkor a számított oszlop pénz lesz, mert az adattípus elsőbbsége magasabb. További információ: Adattípus elsőbbsége (Transact-SQL).
Az Oszlop tulajdonságai lapon bontsa ki a Számított oszlop specifikációja tulajdonságot.
Az (Képlet) al-tulajdonságban adja meg ennek az oszlopnak a kifejezését a jobb oldali cellában. Egy
SalesTotaloszlopban például a beírt képlet lehetSubTotal+TaxAmt+Freight, amely hozzáadja az oszlopban lévő értéket a táblázat minden sorához.Important
Ha egy képlet két különböző adattípusú kifejezést egyesít, az adattípus-elsőbbséget szolgáló szabályok azt határozzák meg, hogy az alacsonyabb elsőbbséget élvező adattípust a rendszer a magasabb elsőbbséget élvező adattípussá konvertálja. Ha az átalakítás nem egy támogatott implicit konverzió, visszaadja a
Error validating the formula for column column_name.hibát. Az adattípus-ütközés feloldásához használja aCASTvagyCONVERTfüggvényt. Ha például egy nvarchar típusú oszlopot egy inttípusú oszloppal kombinálják, akkor az egész számtípust nvarchar típussá kell konvertálni, ahogy az ebben a képletben('Prod'+CONVERT(nvarchar(23),ProductID))látható. További információ: CAST és CONVERT (Transact-SQL).Jelölje meg, hogy az adatok megmaradnak-e, úgy, hogy a Igen vagy a Nem választja ki a Is Persisted al tulajdonság legördülő listájából.
A Fájl menüben válassza a Mentéstáblanévlehetőséget.
Számított oszlopdefiníció hozzáadása meglévő oszlophoz
- Az Object Exploreralkalmazásban kattintson a jobb gombbal arra a táblára, amelynek oszlopát módosítani szeretné, és bontsa ki a Oszlopok mappát.
- Kattintson a jobb gombbal arra az oszlopra, amelyhez számított oszlopképletet szeretne megadni, és válassza a Törléslehetőséget. Kattintson az OK gombra.
- Adjon hozzá egy új oszlopot, és adja meg a számított oszlop képletét az előző eljárás követésével egy új számított oszlop hozzáadásához.
Használd a Transact-SQL-t
Számított oszlop hozzáadása tábla létrehozásakor
Az alábbi példa egy számított oszlopot tartalmazó táblát hoz létre, amely megszorozza a QtyAvailable oszlopban lévő értéket az UnitPrice oszlopban lévő értékkel.
CREATE TABLE dbo.Products
(
ProductID int IDENTITY (1,1) NOT NULL
, QtyAvailable smallint
, UnitPrice money
, InventoryValue AS QtyAvailable * UnitPrice
);
-- Insert values into the table.
INSERT INTO dbo.Products (QtyAvailable, UnitPrice)
VALUES (25, 2.00), (10, 1.5);
-- Display the rows in the table.
SELECT ProductID, QtyAvailable, UnitPrice, InventoryValue
FROM dbo.Products;
-- Update values in the table.
UPDATE dbo.Products
SET UnitPrice = 2.5
WHERE ProductID = 1;
-- Display the rows in the table, and the new values for UnitPrice and InventoryValue.
SELECT ProductID, QtyAvailable, UnitPrice, InventoryValue
FROM dbo.Products;
Új számított oszlop hozzáadása meglévő táblához
Az alábbi példa egy új oszlopot ad hozzá az előző példában létrehozott táblához.
ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5);
Ha szeretné, adja hozzá a PERSISTED argumentumot a számított értékek fizikai tárolásához a táblában:
ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5) PERSISTED;
Meglévő oszlop módosítása számított oszlopra
Az alábbi példa módosítja az előző példában hozzáadott oszlopot.
ALTER TABLE dbo.Products DROP COLUMN RetailValue;
GO
ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5);
GO