SQL Server má ANSI_NULLS
nastavení, které určuje, jak NULL
hodnoty jsou vyhodnoceny při porovnání s jinou hodnotou s hodnotou Rovná se (=
) a Nerovná se (<>
) operátory porovnání.
I když je pravda, že ANSI_NULLS
můžete změnit nastavení na úrovni relace (pomocí SET ANSI_NULLS
), každá databáze má také svůj vlastní ANSI_NULLS
nastavení.
Můžete zkontrolovat svou databázi a zjistit, zda je ANSI_NULLS
nastavení je ON
nebo OFF
.
Chcete-li to provést pomocí T-SQL, můžete použít sys.databases
zobrazení katalogu nebo DATABASEPROPERTYEX()
funkce.
sys.databases
Zobrazit
Soubor sys.databases
zobrazení katalogu obsahuje mnoho informací o každé databázi ve vaší instanci SQL Server.
Následující dotaz vrátí ANSI_NULLS
nastavení pro Music
databáze:
SELECT is_ansi_nulls_on
FROM sys.databases
WHERE name = 'Music';
Výsledek:
+--------------------+ | is_ansi_nulls_on | |--------------------| | 1 | +--------------------+
V tomto případě ANSI_NULLS
je ON
pro tuto databázi.
Můžeme jej OFF
takhle:
ALTER DATABASE Music
SET ANSI_NULLS OFF;
Můžete odstranit WHERE
klauzule při použití sys.databases
zobrazení katalogu pro vrácení dat pro všechny databáze. Takhle:
SELECT
name,
is_ansi_nulls_on
FROM sys.databases
ORDER BY name ASC;
Tento pohled má také sloupec nazvaný is_ansi_null_default_on
, která vrací ANSI_NULL_DEFAULT
nastavení pro databázi.
ANSI_NULL_DEFAULT
nastavení určuje výchozí hodnotu NULL
nebo NOT NULL
, sloupec nebo uživatelsky definovaný typ CLR, pro který není možnost null explicitně definována v CREATE TABLE
nebo ALTER TABLE
prohlášení.
Předchozí příklad bychom mohli upravit tak, aby zahrnoval tento sloupec:
SELECT
name,
is_ansi_nulls_on,
is_ansi_null_default_on
FROM sys.databases
ORDER BY name ASC;
DATABASEPROPERTYEX()
Funkce
Dalším způsobem, jak zkontrolovat tato nastavení, je DATABASEPROPERTYEX()
funkce.
Zde je návod, jak zkontrolovat ANSI_NULLS
nastavení pro Music
DB:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullsEnabled');
Výsledek:
+--------------------+ | (No column name) | |--------------------| | 0 | +--------------------+
Nyní je 0
pro OFF
protože jsem to nastavil na OFF
v předchozím příkladu.
Chcete-li zkontrolovat ANSI_NULL_DEFAULT
nastavení, proveďte toto:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullDefault');
Výsledek:
+--------------------+ | (No column name) | |--------------------| | 1 | +--------------------+