SQL Server heeft een ANSI_NULLS
instelling die bepaalt hoe NULL
waarden worden geëvalueerd in vergelijking met een andere waarde met de Equals (=
) en niet gelijk aan (<>
) vergelijkingsoperatoren.
Hoewel het waar is dat je de ANSI_NULLS
. kunt wijzigen instelling op sessieniveau (met behulp van SET ANSI_NULLS
), heeft elke database ook zijn eigen ANSI_NULLS
instelling.
U kunt uw database controleren om te zien of de ANSI_NULLS
instelling is ON
of OFF
.
Om dit met T-SQL te doen, kunt u ofwel de sys.databases
. gebruiken catalogusweergave of de DATABASEPROPERTYEX()
functie.
De sys.databases
Bekijk
De sys.databases
catalogusweergave bevat veel informatie over elke database in uw SQL Server-instantie.
De volgende query retourneert de ANSI_NULLS
instelling voor de Music
databank:
SELECT is_ansi_nulls_on
FROM sys.databases
WHERE name = 'Music';
Resultaat:
+--------------------+ | is_ansi_nulls_on | |--------------------| | 1 | +--------------------+
In dit geval ANSI_NULLS
is ON
voor deze database.
We kunnen het OFF
zetten zoals dit:
ALTER DATABASE Music
SET ANSI_NULLS OFF;
U kunt de WHERE
. verwijderen clausule bij gebruik van de sys.databases
catalogusweergave om gegevens voor alle databases te retourneren. Zoals dit:
SELECT
name,
is_ansi_nulls_on
FROM sys.databases
ORDER BY name ASC;
Deze weergave heeft ook een kolom met de naam is_ansi_null_default_on
, die de ANSI_NULL_DEFAULT
. retourneert instelling voor de database.
De ANSI_NULL_DEFAULT
instelling bepaalt de standaardwaarde, NULL
of NOT NULL
, van een door de gebruiker gedefinieerd type kolom of CLR waarvoor de nullabiliteit niet expliciet is gedefinieerd in CREATE TABLE
of ALTER TABLE
verklaringen.
We zouden het vorige voorbeeld kunnen aanpassen om deze kolom op te nemen:
SELECT
name,
is_ansi_nulls_on,
is_ansi_null_default_on
FROM sys.databases
ORDER BY name ASC;
De DATABASEPROPERTYEX()
Functie
Een andere manier om deze instellingen te controleren is met de DATABASEPROPERTYEX()
functie.
Zo controleert u de ANSI_NULLS
instelling voor de Music
DB:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullsEnabled');
Resultaat:
+--------------------+ | (No column name) | |--------------------| | 0 | +--------------------+
Het is nu 0
voor OFF
omdat ik het op OFF
heb gezet in een eerder voorbeeld.
Om de ANSI_NULL_DEFAULT
. te controleren instelling, doe dit:
SELECT DATABASEPROPERTYEX('Music','IsAnsiNullDefault');
Resultaat:
+--------------------+ | (No column name) | |--------------------| | 1 | +--------------------+