Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
Belirtilen iki ifade eşitse null değer döndürür. Örneğin, SELECT NULLIF(4,4) AS Same, NULLIF(5,7) AS Different; iki giriş değeri aynı olduğundan ilk sütun (4 ve 4) için NULL döndürür. İki giriş değeri farklı olduğundan ikinci sütun ilk değeri (5) döndürür.
Transact-SQL söz dizimi kuralları
Syntax
NULLIF ( expression , expression )
Arguments
expression
Geçerli bir skaler ifadedir.
Dönüş Türleri
İlk ifadeyle aynı türü döndürür.
İki ifade eşit değilse, NULLIF ilk ifadeyi döndürür. İfadeler eşitse, NULLIF ilk ifadenin türünde null bir değer döndürür.
Remarks
NULLIF, iki ifadenin eşit olduğu ve sonuçta elde edilen ifadenin NULL olduğu, aranan CASE ifadesine eşdeğerdir.
NULLIF işlevinde S_SAYI_ÜRET() gibi zamana bağımlı işlevleri kullanmamanızı öneririz. Bu, işlevin iki kez değerlendirilmesine ve iki çağrıdan farklı sonuçlar döndürmesine neden olabilir.
Examples
A. Değişmeyen bütçe tutarlarını iade etme
Aşağıdaki örnek, bir departmanın () geçerli bütçesini (budgets) ve önceki bütçesini (deptcurrent_year) göstermek için bir previous_year tablo oluşturur. Geçerli yıl için, NULL önceki yıldan itibaren değişmeyen bütçeleri olan departmanlar için kullanılır ve 0 henüz belirlenmemiş bütçeler için kullanılır. Yalnızca bütçe alan bölümlerin ortalamasını bulmak ve önceki yıla ait bütçe değerini dahil etmek için (değerini kullanın, burada previous_year değerini current_yearkullanınNULL), ve NULLIF işlevlerini birleştirinCOALESCE.
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
Sonuç kümesi aşağıdadır.
Average Budget
--------------
212500.000000
(1 row(s) affected)
B. NULLIF ve CASE karşılaştırması
ile NULLIFarasındaki CASE benzerliği göstermek için aşağıdaki sorgular ve MakeFlag sütunlarındaki değerlerin FinishedGoodsFlag aynı olup olmadığını değerlendirir. İlk sorguda kullanılır NULLIF. İkinci sorgu ifadeyi CASE kullanır.
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: Veri içermeyen bütçe tutarlarını döndürme
Aşağıdaki örnek bir budgets tablo oluşturur, verileri yükler ve null ise NULLIF null döndürmek için kullanır current_year veya ile previous_yearaynı verileri içerir.
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;
Sonuç kümesi aşağıdadır.
dept LastBudget
---- -----------
1 100000.00
2 null
3 0.00
4 null
5 null
Ayrıca Bkz.
CASE (Transact-SQL)
ondalık ve sayısal (Transact-SQL)
Sistem İşlevleri (Transact-SQL)