When ever we are creating or altering the SQL objects like the Stored Procedures and the User Defined Functions at that time most of us use this. Let us understand this better with an example let us create a table and insert some records,
CREATE
TABLE #Demo
(
FName
VARCHAR(200),
LName
Varchar(200)
)
Insert
#Demo values('Ravi','Shekhar')
Insert
#Demo values('Isha',NULL)
Insert
#Demo values('Santosh','Thakur')
SQL Server tends to behave differently when ever we use either the SET ANSI_NULL ON or the OFF .
SET ANSI_NULL ON;
If the ANSI_NULL is on then the comparison with NULL value with = or <> returns false.
SET
ANSI_NULLS
ON
SELECT
* FROM #Demo
WHERE LName =
NULL
SELECT
* FROM #Demo
WHERE LName <>
NULL
The above query returns No result just because of the ANSI_NULL was ON.
In such a case we use IS NULL or IS NOT NULL.
SET
ANSI_NULLS
ON
SELECT
* FROM #Demo
WHERE LName IS
NULL
SELECT
* FROM #Demo
WHERE LName IS
NOT
NULL
The Above query returns the rows with NULL/NOT NULL value.
When this setting value is ON then we need to use IS NULL or IS NOT NULL instead of
the comparison operator = and <>.
SET ANSI_NULL OFF;
On the other hand if this setting value is OFF then the comparison with the NULL value
using = and <> comparison operator returns TRUE.
SET
ANSI_NULLS OFF
SELECT
* FROM #Demo
WHERE LName =
NULL
SELECT
* FROM #Demo
WHERE LName <>
NULL
If there is any mistake in the concept mentioned above. Then do Comment.