2008-03-13

SET ANSI_NULLS ON / OFF

Mit SET ANSI_NULLS wird das Verhalten mit NULL-Werten festgelegt, wenn innerhalb einer WHERE-Bedingung die Vergleichsoperatoren „=“ und „<>“ verwendet werden.

SET ANSI_NULLS ON mit der Bedingung WHERE MiddleName = NULL liefert keine Datensätze zurück.

SET ANSI_NULLS ON
SELECT Title, FirstName, MiddleName
FROM Person.Contact
WHERE MiddleName = NULL

Title FirstName MiddleName
-------- ----------------------------- --------------------------------------------------

(
0 row(s) affected)



Die Bedingung für die Ermittlung der Datensätze mit NULL-Werten kann wie folgt aussehen:




SET ANSI_NULLS ON
SELECT Title, FirstName, MiddleName
FROM Person.Contact
WHERE MiddleName IS NULL

Title FirstName MiddleName
-------- ----------------------------- --------------------------------------------------
Mr. Gustavo NULL
Ms. Kim
NULL
Sr. Humberto
NULL
Sra. Pilar
NULL
Mr. Jay
NULL
Mr. François
NULL
Ms. Kim
NULL
Ms. Michelle
NULL
Mr. Michael
NULL
Mr. John
NULL
...
(
8499 row(s) affected)



SET ANSI_NULLS OFF mit der Bedingung WHERE MiddleName = NULL liefert die gleichen Datensätze wie WHERE MiddleName IS NULL zurück.



SET ANSI_NULLS OFF
SELECT Title, FirstName, MiddleName
FROM Person.Contact
WHERE MiddleName
= NULL

Title FirstName MiddleName
-------- ----------------------------- --------------------------------------------------
Mr. Gustavo NULL
Ms. Kim NULL
Sr. Humberto NULL
Sra. Pilar NULL
Mr. Jay NULL
Mr. François NULL
Ms. Kim NULL
Ms. Michelle NULL
Mr. Michael NULL
Mr. John NULL
...
(
8499 row(s) affected)


In SQL-Server 2005-Dokumentation wird drauf hingewiesen, dass dieses Feature in einer zukünftigen Version von Microsoft SQL Server entfernt wird. Daher wird empfohlen, dieses Feature bei neuen Anwendungen nicht zu verwenden.

No comments: