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 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
SQL analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
İki ifadenin eşitliğini karşılaştırır ve bir veya iki işlenen null olsa bile doğru veya yanlış sonucu garanti eder.
IS [NOT] DISTINCT FROM, WHERE yan tümcelerinin ve HAVING yan tümcelerinin, FROM yan tümcelerinin birleştirme koşullarının ve Boole değerinin gerekli olduğu diğer yapıların arama koşulunda kullanılan bir koşuldur.
Transact-SQL söz dizimi kuralları
Syntax
expression IS [NOT] DISTINCT FROM expression
Arguments
expression
Herhangi bir geçerli ifade.
İfade bir sütun, sabit, işlev, değişken, skaler alt sorgu veya bir işleç veya işleç tarafından bağlanan sütun adları, sabitler ve işlevlerin herhangi bir bileşimi ya da alt sorgu olabilir.
Remarks
NULL değerini başka bir NULL değer de dahil olmak üzere başka bir değerle karşılaştırmak bilinmeyen bir sonuç verir. IS [NOT] DISTINCT FROM, null değerleri karşılaştırma işleci olarak kullanıldığında bilinen değerler olarak değerlendireceği için her zaman true veya false döndürür.
Aşağıdaki örnek tablo, IS [NOT] DISTINCT FROM davranışını göstermek için ve değerlerini AB kullanır:
| A | B | A = B | A, B'DEN AYRı DEĞIL |
|---|---|---|---|
| 0 | 0 | True | True |
| 0 | 1 | False | False |
| 0 | NULL | Unknown | False |
| NULL | NULL | Unknown | True |
IS [NOT] DISTINCT FROM içeren bir sorguyu bağlı sunuculara karşı yürütürken, bağlantılı sunucuya gönderilen sorgu metni, bağlı sunucunun söz dizimini ayrıştırma özelliğine sahip olup olmadığını belirleyip belirleyemeyeceğine bağlı olarak değişir.
Bağlı sunucunun AYRıŞTIRILABILDIĞINI belirlersek [NOT] DISTINCT FROM, as-issöz diziminin kodunu çözeriz. Bağlı sunucunun IS [NOT] DISTINCT FROM ayrıştırabileceğini belirleyemezsek, aşağıdaki ifadelerin kodunu çözeriz:
A IS DISTINCT FROM B kodunu şu şekilde çözer: ((A <> B OR A IS NULL OR B IS NULL) AND NOT (A IS NULL AND B IS NULL))
A IS NOT DISTINCT FROM B kodunu şu şekilde çözer: (NOT (A <> B OR A IS NULL OR B IS NULL) OR (A IS NULL AND B IS NULL))
Examples
A. IS DISTINCT FROM komutunu kullanın
Aşağıdaki örnek, alanın 17 tamsayı değerinden farklı olduğu id satırları döndürür.
DROP TABLE IF EXISTS #SampleTempTable;
GO
CREATE TABLE #SampleTempTable (id INT, message nvarchar(50));
INSERT INTO #SampleTempTable VALUES (null, 'hello') ;
INSERT INTO #SampleTempTable VALUES (10, null);
INSERT INTO #SampleTempTable VALUES (17, 'abc');
INSERT INTO #SampleTempTable VALUES (17, 'yes');
INSERT INTO #SampleTempTable VALUES (null, null);
GO
SELECT * FROM #SampleTempTable WHERE id IS DISTINCT FROM 17;
DROP TABLE IF EXISTS #SampleTempTable;
GO
Sonuçlar, 17 değeriyle eşleşen tüm satırları id dışlar.
id message
----------- ---------
NULL hello
10 NULL
NULL NULL
B. ŞUNDAN FARKLI DEĞİlDİ
Aşağıdaki örnek, alanın 17 tamsayı değerinden farklı olmadığı satırları id döndürür.
DROP TABLE IF EXISTS #SampleTempTable;
GO
CREATE TABLE #SampleTempTable (id INT, message nvarchar(50));
INSERT INTO #SampleTempTable VALUES (null, 'hello') ;
INSERT INTO #SampleTempTable VALUES (10, null);
INSERT INTO #SampleTempTable VALUES (17, 'abc');
INSERT INTO #SampleTempTable VALUES (17, 'yes');
INSERT INTO #SampleTempTable VALUES (null, null);
GO
SELECT * FROM #SampleTempTable WHERE id IS NOT DISTINCT FROM 17;
DROP TABLE IF EXISTS #SampleTempTable;
GO
Sonuçlar yalnızca değerinin 17 ile eşleştiği id satırları döndürür.
id message
----------- --------
17 abc
17 yes
C. NULL değere karşı IS DISTINCT FROM kullanın
Aşağıdaki örnek, alanın NULL'dan ayrı olduğu id satırları döndürür.
DROP TABLE IF EXISTS #SampleTempTable;
GO
CREATE TABLE #SampleTempTable (id INT, message nvarchar(50));
INSERT INTO #SampleTempTable VALUES (null, 'hello') ;
INSERT INTO #SampleTempTable VALUES (10, null);
INSERT INTO #SampleTempTable VALUES (17, 'abc');
INSERT INTO #SampleTempTable VALUES (17, 'yes');
INSERT INTO #SampleTempTable VALUES (null, null);
GO
SELECT * FROM #SampleTempTable WHERE id IS DISTINCT FROM NULL;
DROP TABLE IF EXISTS #SampleTempTable;
GO
Sonuçlar yalnızca NULL olmayan satırları id döndürür.
id message
----------- --------
10 NULL
17 abc
17 yes
D. NULL değere karşı IS NOT DISTINCT FROM kullanın
Aşağıdaki örnek, alanın NULL'tan farklı olmadığı satırları id döndürür.
DROP TABLE IF EXISTS #SampleTempTable;
GO
CREATE TABLE #SampleTempTable (id INT, message nvarchar(50));
INSERT INTO #SampleTempTable VALUES (null, 'hello') ;
INSERT INTO #SampleTempTable VALUES (10, null);
INSERT INTO #SampleTempTable VALUES (17, 'abc');
INSERT INTO #SampleTempTable VALUES (17, 'yes');
INSERT INTO #SampleTempTable VALUES (null, null);
GO
SELECT * FROM #SampleTempTable WHERE id IS NOT DISTINCT FROM NULL;
DROP TABLE IF EXISTS #SampleTempTable;
GO
Sonuçlar yalnızca NULL olan id satırları döndürür.
id message
----------- --------
NULL hello
NULL NULL