SQL Server har en ANSI_NULLS
indstilling, der bestemmer hvordan NULL
værdier evalueres sammenlignet med en anden værdi med Equals (=
) og Ikke lig med (<> ) sammenligningsoperatører.
Selvom det er rigtigt, at du kan ændre ANSI_NULLS
indstilling på sessionsniveau (ved hjælp af SET ANSI_NULLS
), hver database har også sin egen ANSI_NULLS
indstilling.
Du kan tjekke din database for at se, om dens ANSI_NULLS
indstillingen er ON
eller OFF
.
For at gøre dette med T-SQL kan du enten bruge sys.databases
katalogvisning eller DATABASEPROPERTYEX()
funktion.
sys.databases
Vis
sys.databases
katalogvisningen indeholder en masse information om hver database i din SQL Server-instans.
Følgende forespørgsel returnerer ANSI_NULLS
indstilling for Musik
database:
SELECT is_ansi_nulls_on
FROM sys.databases
WHERE name = 'Music';
Resultat:
+--------------------+ | is_ansi_nulls_on | |--------------------| | 1 | +--------------------+
I dette tilfælde ANSI_NULLS
er ON
for denne database.
Vi kan slå det OFF
sådan her:
ALTER DATABASE Music
SET ANSI_NULLS OFF;
Du kan fjerne WHERE
klausul, når du bruger sys.databases
katalogvisning for at returnere data for alle databaser. Sådan:
SELECT
name,
is_ansi_nulls_on
FROM sys.databases
ORDER BY name ASC;
Denne visning har også en kolonne kaldet is_ansi_null_default_on
, som returnerer ANSI_NULL_DEFAULT
indstilling for databasen.
ANSI_NULL_DEFAULT
indstilling bestemmer standardværdien, NULL
eller IKKE NULL
, af en kolonne eller CLR brugerdefineret type, for hvilken nullabiliteten ikke er eksplicit defineret i CREATE TABLE
eller ÆNDRINGSTABEL
udsagn.
Vi kunne ændre det foregående eksempel til at inkludere denne kolonne:
SELECT
name,
is_ansi_nulls_on,
is_ansi_null_default_on
FROM sys.databases
ORDER BY name ASC;
DATABASEPROPERTYEX()
Funktion
En anden måde at kontrollere disse indstillinger på er med DATABASEPROPERTYEX()
funktion.
Sådan kontrollerer du ANSI_NULLS
indstilling for Musik
DB:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullsEnabled');
Resultat:
+--------------------+ | (No column name) | |--------------------| | 0 | +--------------------+
Det er nu 0
for OFF
fordi jeg satte den til OFF
i et tidligere eksempel.
For at kontrollere ANSI_NULL_DEFAULT
indstilling skal du gøre dette:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullDefault');
Resultat:
+--------------------+ | (No column name) | |--------------------| | 1 | +--------------------+