Aracılığıyla paylaş


set ANSI_NULLS (Transact-SQL)

ISO uyumlu eşittir (=) davranışını belirtir ve eşit değil (<>) null değerleri ile kullanıldığında karşılaştırma işleçleri.

Önemli notÖnemli

İçinde gelecekteki bir sürüm SQL Server, ANSI_NULLS on her zaman olacaktır ve açıkça seçeneği off için küme bir hata. kaldırmayacağını uygulamalarıYeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

SET ANSI_NULLS { ON | OFF }

Açıklamalar

set ANSI_NULLS on, where kullanan bir select deyim olduğunda column_name = NULL null değerleri vardır bile sıfır satır döndürür column_name.where kullanan bir select deyim column_name <> NULL sıfır satır döndürür null olmayan değerler vardır bile column_name.

Ne zaman set ANSI_NULLS off, eşittir (=) olan ve eşit değil (<>) karşılaştırma işleçleri ISO standart izleyin değil.where kullanan bir select deyim column_name = NULL içinde null değerlere sahip satırlar verir column_name.where kullanan bir select deyim column_name <> NULL sütunnull olmayan değerler içeren bir satır döndürür.NEREDE kullandığı da, bir select deyim column_name <> XYZ_value olmayan tüm satırları verir XYZ_value ve null.

set ANSI_NULLS on olarak ayarlandığında, bir null değer karşı tüm karşılaştırmalar için bilinmeyen değerlendirin.set ANSI_NULLS off olduğunda, veri değeri null ise null bir değere karşı tüm veri karşılaştırmaları doğru olarak değerlendirin.set ANSI_NULLS belirtilmezse, geçerli veritabanının ANSI_NULLS seçeneği ayarını uygular.ANSI_NULLS veritabanı seçeneği hakkında daha fazla bilgi için bkz: ALTER DATABASE (Transact-SQL) ve Veritabanı seçeneklerini ayarlama.

Yalnızca karşılaştırma işleci ya da ise set ANSI_NULLS on bir karşılaştırma null ya da değişmez bir null olan bir değişken etkiler.Karşılaştırma iki sütun veya bileşik ifadeler, karşılaştırma ayarını etkilemez.

Beklendiği gibi çalışması bir komut seçeneği veya set ANSI_NULLS ayarı ne olursa olsun ANSI_NULLS veritabanı, IS null ve IS not null değerler içerebilecek karşılaştırmaları içinde null kullanın.

set ANSI_NULLS küme on dağıtılmış sorguları yürütme için olmalıdır.

set ANSI_NULLS oluştururken veya dizinler üzerinde hesaplanan sütunlar veya dizin oluşturulmuş görünümler değiştirme, on da olması gerekir.set ANSI_NULLS off, herhangi oluştur, update, INSERT ve delete deyimlerini tablolarda dizinler üzerinde hesaplanan sütunlar veya dizin oluşturulmuş görünümler ile başarısız olur.SQL Servergerekli değerleri ihlal eden tüm seçeneklerini ayarlama listeleyen bir hata döndürecektir.Ayrıca, ne zaman set ANSI_NULLS off, ise bir select deyim yürütmek SQL Server hesaplanan sütunlar veya Görünüm dizin değerlerini yoksayar ve select işlemi gibi tablolar veya bu tür bir dizin vardı çözmekgörünümler.

Not

ANSI_NULLS postalarla dizinler üzerinde hesaplanan sütunlar veya dizin oluşturulmuş görünümler, küme için gerekli değerleri olması gereken yedi seçeneklerini ayarlama biridir.ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, QUOTED_IDENTIFIER ve CONCAT_NULL_YIELDS_NULL seçenekleri de küme için on, olmalıdır ve NUMERIC_ROUNDABORT off için küme olması gerekir.

SQL Server Yerel istemci odbc sürücüsü ve SQL Server yerel istemci ole DB sağlayıcısı için SQL Server otomatik olarak küme ANSI_NULLS bağlanırken açık.Bu ayarı yapılandırılabilir, odbc veri kaynakları, odbc bağlantı özniteliklerini veya küme örnek için bağlanmadan önce uygulamadaki ole DB bağlantı özellikleri SQL Server.Varsayılan set ANSI_NULLS kapalı'dır.

set ANSI_NULLS set ANSI_DEFAULTS on olduğunda etkinleştirilir.

set ANSI_NULLS ayarı yürütmek sırasında küme veya çalışma saat ve ayrıştırma saatzaman.

İzinler

Üyelik gerektiren public rolü.

Örnekler

Aşağıdaki örnek, eşittir kullanır (=) ve Not Equal To (<>) ile karşılaştırmaları yapmak için karşılaştırma işleçleri NULL ve null olmayan değerler tablo.Ayrıca, örnekler IS NULL etkilenmez SET ANSI_NULLS ayarı.

-- Create table t1 and insert values.
CREATE TABLE t1 (a INT NULL)
INSERT INTO t1 values (NULL)
INSERT INTO t1 values (0)
INSERT INTO t1 values (1)
GO

-- Print message and perform SELECT statements.
PRINT 'Testing default setting'
DECLARE @varname int
SELECT @varname = NULL
SELECT * 
FROM t1 
WHERE a = @varname
SELECT * 
FROM t1 
WHERE a <> @varname
SELECT * 
FROM t1 
WHERE a IS NULL
GO

-- SET ANSI_NULLS to ON and test.
PRINT 'Testing ANSI_NULLS ON'
SET ANSI_NULLS ON
GO
DECLARE @varname int
SELECT @varname = NULL
SELECT * 
FROM t1 
WHERE a = @varname
SELECT * 
FROM t1 
WHERE a <> @varname
SELECT * 
FROM t1 
WHERE a IS NULL
GO

-- SET ANSI_NULLS to OFF and test.
PRINT 'Testing SET ANSI_NULLS OFF'
SET ANSI_NULLS OFF
GO
DECLARE @varname int
SELECT @varname = NULL
SELECT * 
FROM t1 
WHERE a = @varname
SELECT * 
FROM t1 
WHERE a <> @varname
SELECT * 
FROM t1 
WHERE a IS NULL
GO

-- Drop table t1.
DROP TABLE t1