SQL Server има ANSI_NULLS
настройка, която определя как NULL
Стойностите се оценяват, когато се сравняват с друга стойност с Equals (=
) и не е равно на (<>
) оператори за сравнение.
Въпреки че е вярно, че можете да промените ANSI_NULLS
настройка на ниво сесия (използвайки SET ANSI_NULLS
), всяка база данни също има свой собствен ANSI_NULLS
настройка.
Можете да проверите вашата база данни, за да видите дали е ANSI_NULLS
настройката е ON
или OFF
.
За да направите това с T-SQL, можете да използвате или sys.databases
изглед на каталог или DATABASEPROPERTYEX()
функция.
sys.databases
Преглед
sys.databases
изгледът на каталог съдържа много информация за всяка база данни във вашия екземпляр на SQL Server.
Следната заявка връща ANSI_NULLS
настройка за Music
база данни:
SELECT is_ansi_nulls_on
FROM sys.databases
WHERE name = 'Music';
Резултат:
+--------------------+ | is_ansi_nulls_on | |--------------------| | 1 | +--------------------+
В този случай ANSI_NULLS
е ON
за тази база данни.
Можем да го изключим OFF
така:
ALTER DATABASE Music
SET ANSI_NULLS OFF;
Можете да премахнете WHERE
клауза при използване на sys.databases
каталожен изглед за връщане на данни за всички бази данни. Като това:
SELECT
name,
is_ansi_nulls_on
FROM sys.databases
ORDER BY name ASC;
Този изглед също има колона, наречена is_ansi_null_default_on
, който връща ANSI_NULL_DEFAULT
настройка за базата данни.
ANSI_NULL_DEFAULT
настройката определя стойността по подразбиране, NULL
или NOT NULL
, от колона или CLR дефиниран от потребителя тип, за който възможността за нулиране не е изрично дефинирана в CREATE TABLE
или ALTER TABLE
изявления.
Бихме могли да модифицираме предишния пример, за да включим тази колона:
SELECT
name,
is_ansi_nulls_on,
is_ansi_null_default_on
FROM sys.databases
ORDER BY name ASC;
DATABASEPROPERTYEX()
Функция
Друг начин да проверите тези настройки е с DATABASEPROPERTYEX()
функция.
Ето как да проверите ANSI_NULLS
настройка за Music
DB:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullsEnabled');
Резултат:
+--------------------+ | (No column name) | |--------------------| | 0 | +--------------------+
Сега е 0
за OFF
защото го настроих на OFF
в предишен пример.
За да проверите ANSI_NULL_DEFAULT
настройка, направете това:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullDefault');
Резултат:
+--------------------+ | (No column name) | |--------------------| | 1 | +--------------------+