SQL Server har en ANSI_NULLS
inställning som bestämmer hur NULL
värden utvärderas jämfört med ett annat värde med Equals (=
) och Inte lika med (<> ) jämförelseoperatorer.
Även om det är sant att du kan ändra ANSI_NULLS
inställning på sessionsnivå (med SET ANSI_NULLS
), har varje databas också sin egen ANSI_NULLS
inställning.
Du kan kontrollera din databas för att se om dess ANSI_NULLS
inställningen är ON
eller AV
.
För att göra detta med T-SQL kan du antingen använda sys.databases
katalogvy eller DATABASEPROPERTYEX()
funktion.
sys.databases
Visa
sys.databases
katalogvyn innehåller mycket information om varje databas i din SQL Server-instans.
Följande fråga returnerar ANSI_NULLS
inställning för Musik
databas:
SELECT is_ansi_nulls_on
FROM sys.databases
WHERE name = 'Music';
Resultat:
+--------------------+ | is_ansi_nulls_on | |--------------------| | 1 | +--------------------+
I det här fallet, ANSI_NULLS
är PÅ
för denna databas.
Vi kan stänga av den AV
så här:
ALTER DATABASE Music
SET ANSI_NULLS OFF;
Du kan ta bort WHERE
sats när du använder sys.databases
katalogvy för att returnera data för alla databaser. Så här:
SELECT
name,
is_ansi_nulls_on
FROM sys.databases
ORDER BY name ASC;
Den här vyn har också en kolumn som heter is_ansi_null_default_on
, som returnerar ANSI_NULL_DEFAULT
inställning för databasen.
ANSI_NULL_DEFAULT
inställningen bestämmer standardvärdet, NULL
eller NOT NULL
, av en kolumn eller CLR användardefinierad typ för vilken nollbarheten inte är uttryckligen definierad i SKAPA TABELL
eller ÄNDRA TABELL
uttalanden.
Vi skulle kunna modifiera det föregående exemplet för att inkludera denna kolumn:
SELECT
name,
is_ansi_nulls_on,
is_ansi_null_default_on
FROM sys.databases
ORDER BY name ASC;
DATABASEPROPERTYEX()
Funktion
Ett annat sätt att kontrollera dessa inställningar är med DATABASEPROPERTYEX()
funktion.
Så här kontrollerar du ANSI_NULLS
inställning för Musik
DB:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullsEnabled');
Resultat:
+--------------------+ | (No column name) | |--------------------| | 0 | +--------------------+
Det är nu 0
för AV
eftersom jag ställer in den på OFF
i ett tidigare exempel.
För att kontrollera ANSI_NULL_DEFAULT
gör så här:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullDefault');
Resultat:
+--------------------+ | (No column name) | |--------------------| | 1 | +--------------------+