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
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Null értéket ad vissza, ha a két megadott kifejezés egyenlő. Például SELECT NULLIF(4,4) AS Same, NULLIF(5,7) AS Different; null értéket ad vissza az első oszlophoz (4 és 4), mert a két bemeneti érték megegyezik. A második oszlop az első értéket (5) adja vissza, mert a két bemeneti érték eltérő.
Transact-SQL szintaxis konvenciók
Syntax
NULLIF ( expression , expression )
Arguments
expression
Érvényes skaláris kifejezés.
Visszatérési típusok
Ugyanazt a típust adja vissza, mint az első kifejezés.
A NULLIF az első kifejezést adja vissza, ha a két kifejezés nem egyenlő. Ha a kifejezések egyenlőek, a NULLIF az első kifejezés típusának null értékét adja vissza.
Remarks
A NULLIF egyenértékű egy olyan keresett CASE kifejezéssel, amelyben a két kifejezés egyenlő, az eredmény pedig NULL.
Azt javasoljuk, hogy ne használjon időfüggő függvényeket, például a RAND() függvényt a NULLIF függvényen belül. Ez azt eredményezheti, hogy a függvényt kétszer kell kiértékelni, és a két meghívástól eltérő eredményt ad vissza.
Examples
A. Nem módosított költségvetési összegek visszaadása
Az alábbi példa egy táblát budgets hoz létre, amely egy részleg () aktuális költségvetését (deptcurrent_year) és korábbi költségvetését (previous_year) jeleníti meg. Az aktuális évre az előző évtől NULL nem módosított költségvetéssel rendelkező részlegek esetében használatos, és 0 olyan költségvetésekhez használatos, amelyek még nem lettek meghatározva. Ha csak azoknak a részlegeknek az átlagát szeretné megtudni, amelyek költségvetést kapnak, és hogy belefoglalják az előző év költségvetési értékét (használja az previous_year értéket, ahol az current_year vanNULL), kombinálja a függvényeket és NULLIF a COALESCE függvényeket.
CREATE TABLE dbo.budgets
(
dept TINYINT IDENTITY,
current_year DECIMAL NULL,
previous_year DECIMAL NULL
);
INSERT budgets VALUES(100000, 150000);
INSERT budgets VALUES(NULL, 300000);
INSERT budgets VALUES(0, 100000);
INSERT budgets VALUES(NULL, 150000);
INSERT budgets VALUES(300000, 250000);
GO
SET NOCOUNT OFF;
SELECT AVG(NULLIF(COALESCE(current_year,
previous_year), 0.00)) AS [Average Budget]
FROM budgets;
GO
Itt van az eredmények összessége.
Average Budget
--------------
212500.000000
(1 row(s) affected)
B. A NULLIF és a CASE összehasonlítása
A két és NULLIFaz közötti CASE hasonlóság megjelenítéséhez az alábbi lekérdezések kiértékelik, hogy az oszlopok és MakeFlag az FinishedGoodsFlag oszlopok értékei megegyeznek-e. Az első lekérdezés a következőt használja NULLIF: . A második lekérdezés a CASE kifejezést használja.
USE AdventureWorks2022;
GO
SELECT ProductID, MakeFlag, FinishedGoodsFlag,
NULLIF(MakeFlag,FinishedGoodsFlag) AS [Null if Equal]
FROM Production.Product
WHERE ProductID < 10;
GO
SELECT ProductID, MakeFlag, FinishedGoodsFlag, [Null if Equal] =
CASE
WHEN MakeFlag = FinishedGoodsFlag THEN NULL
ELSE MakeFlag
END
FROM Production.Product
WHERE ProductID < 10;
GO
C: Adatok nélküli költségvetési összegek visszaadása
Az alábbi példa létrehoz egy táblát budgets , betölti az adatokat, és null értéket ad NULLIF vissza, ha current_year null értékű, vagy ugyanazokat az adatokat tartalmazza, mint previous_yeara .
Copy
CREATE TABLE budgets (
dept TINYINT,
current_year DECIMAL(10,2),
previous_year DECIMAL(10,2)
);
INSERT INTO budgets VALUES(1, 100000, 150000);
INSERT INTO budgets VALUES(2, NULL, 300000);
INSERT INTO budgets VALUES(3, 0, 100000);
INSERT INTO budgets VALUES(4, NULL, 150000);
INSERT INTO budgets VALUES(5, 300000, 300000);
SELECT dept, NULLIF(current_year,
previous_year) AS LastBudget
FROM budgets;
Itt van az eredmények összessége.
dept LastBudget
---- -----------
1 100000.00
2 null
3 0.00
4 null
5 null
Lásd még:
ESET (Transact-SQL)
decimális és numerikus (Transact-SQL)
Rendszerfunkciók (Transact-SQL)