Earlier I have posted a puzzle where I was receiving different results when I executed two different queries. I encourage all of you to read the original puzzle here, the puzzle had received many fantastic responses and I have later blogged about the solution of the puzzle over here. This time the puzzle runs with SET ANSI_NULLS OFF.

Now I have decided to extend the same puzzle and take it to the next level. In earlier puzzle I had value of the ANSI_NULLS was set to ON. Now in this puzzle let us set the value of the ANSI_NULLS to OFF. When the value of ANSI_NULLS was off at that time, the result of the both the queries is almost identical. The key reason behind this behavior is ANSI_NULLS setting.
However, the puzzle is to answer that why the different queries are producing almost same results when there is a different setting of ANSI_NULL.
Let us see the same concept in following SQL in Sixty Seconds Video:
Here is the script used in this episode:
-- Original Puzzle
SQL SERVER – SQL Puzzle of SET ANSI_NULL – Win USD 50 worth Amazon Gift Cards and Bubble Copter R/C
-- Script
SET ANSI_NULLS ON;
-- Query1
SELECT 'SQLAuthority' AS Statement11
WHERE 'Authority' IN ('S','Q', 'L', 'Authority', NULL);
-- Query 2
SELECT 'SQLAuthority' AS Statement12
WHERE 'Authority' NOT IN ('S','Q', 'L', NULL);
-- Puzzle Solution
SQL SERVER- Solution – SQL Puzzle of SET ANSI_NULL
------------------------------------------------------
-- New puzzle
SET ANSI_NULLS OFF;
-- Query3
SELECT 'SQLAuthority' AS Statement11
WHERE 'Authority' IN ('S','Q', 'L', 'Authority', NULL);
-- Query 4
SELECT 'SQLAuthority' AS Statement12
WHERE 'Authority' NOT IN ('S','Q', 'L', NULL);
Related Tips in SQL in Sixty Seconds:
- SQL SERVER – SQL Puzzle of SET ANSI_NULL
- SQL SERVER- Solution – SQL Puzzle of SET ANSI_NULL
- QUOTED_IDENTIFIER ON/OFF and ANSI_NULL ON/OFF Explanation
- Restrictions of Views – T SQL View Limitations
What would you like to see in the next SQL in Sixty Seconds video?
Published by Pinal Dave on SQLAuthority. More of my work at pinaldave.com.
Discover more from SQL Authority with Pinal Dave
Subscribe to get the latest posts sent to your email.




1 Comment. Leave new
When you set ANSI_NULLS off, it will not follow the ISO Standard and in comparison with column and NULL, it will always return TRUE.
Query 3 :
‘Authority’ = ‘S’ OR ‘Authority’ = ‘Q’ OR ‘Authority’ = ‘L’ OR ‘Authority’ = ‘Authority’ OR ‘Authority’ = NULL
Returns FALSE OR FALSE OR FALSE OR TRUE OR TRUE so the final result is TRUE.
RESULT : the query will return the value SQLAUTHORITY
===================================
Query 4 :
‘Authority’ != ‘S’ AND ‘Authority’ != ’Q’ AND ‘Authority’ != ’L’ AND ‘Authority’ != NULL
Returns TRUE AND TRUE AND TRUE AND TRUE so the final result is TRUE.
RESULT : the query will return the value SQLAUTHORITY