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 | +--------------------+