SQL Server ma ANSI_NULLS ustawienie określające jak NULL wartości są oceniane w porównaniu z inną wartością z równaniem (= ) i Nie równa się (<> ) operatory porównania.
Chociaż prawdą jest, że możesz zmienić ANSI_NULLS ustawienie na poziomie sesji (za pomocą SET ANSI_NULLS ), każda baza danych ma również swój własny ANSI_NULLS ustawienie.
Możesz sprawdzić swoją bazę danych, aby zobaczyć, czy jest w niej ANSI_NULLS ustawienie jest ON lub OFF .
Aby to zrobić za pomocą T-SQL, możesz użyć sys.databases widok katalogu lub DATABASEPROPERTYEX() funkcja.
Bazy sys.databases Zobacz
sys.databases Widok katalogu zawiera wiele informacji o każdej bazie danych w instancji SQL Server.
Następujące zapytanie zwraca ANSI_NULLS ustawienie dla Music baza danych:
SELECT is_ansi_nulls_on
FROM sys.databases
WHERE name = 'Music'; Wynik:
+--------------------+ | is_ansi_nulls_on | |--------------------| | 1 | +--------------------+
W tym przypadku ANSI_NULLS jest ON dla tej bazy danych.
Możemy go wyłączyć OFF tak:
ALTER DATABASE Music
SET ANSI_NULLS OFF;
Możesz wyeliminować WHERE klauzula podczas korzystania z sys.databases widok katalogu, aby zwrócić dane dla wszystkich baz danych. Tak:
SELECT
name,
is_ansi_nulls_on
FROM sys.databases
ORDER BY name ASC;
Ten widok ma również kolumnę o nazwie is_ansi_null_default_on , który zwraca ANSI_NULL_DEFAULT ustawienia dla bazy danych.
ANSI_NULL_DEFAULT ustawienie określa wartość domyślną, NULL lub NOT NULL , kolumny lub typu zdefiniowanego przez użytkownika w środowisku CLR, dla którego dopuszczalność wartości null nie jest jawnie zdefiniowana w CREATE TABLE lub ALTER TABLE oświadczenia.
Moglibyśmy zmodyfikować poprzedni przykład, aby uwzględnić tę kolumnę:
SELECT
name,
is_ansi_nulls_on,
is_ansi_null_default_on
FROM sys.databases
ORDER BY name ASC; DATABASEPROPERTYEX() Funkcja
Innym sposobem sprawdzenia tych ustawień jest użycie DATABASEPROPERTYEX() funkcja.
Oto jak sprawdzić ANSI_NULLS ustawienie dla Music DB:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullsEnabled'); Wynik:
+--------------------+ | (No column name) | |--------------------| | 0 | +--------------------+
Teraz jest 0 dla OFF ponieważ ustawiłem go na OFF w poprzednim przykładzie.
Aby sprawdzić ANSI_NULL_DEFAULT ustawienie, zrób to:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullDefault'); Wynik:
+--------------------+ | (No column name) | |--------------------| | 1 | +--------------------+