• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 307
  • Last Modified:

working with NULL values

what is the reason that the select statement does not bring back valid records. seems like the NULL can kill the query from bringing back good results..
-----------------------------------

create table one (first tinyint)
insert into one select 1 union select 2 union select 3
create table two (second tinyint)
insert into two select 1 union select NULL

select first from one where first not in (select second from two) -- does not work

drop table one
drop table two
0
anushahanna
Asked:
anushahanna
4 Solutions
 
cyberkiwiCommented:
That is because NULLS are a quirk, they are incomparable.
set @d = null
if @d = 1 print 1
if @d != 1 print 1
neither will fire because it is neither equal to nor not equal to

It is just what it is
For IN (.. including NULL ..) it will return matches EXCEPT null, i.e. null records from left hand side won't be matched [unless ANSI_NULLS is set off]

FOR NOT IN (..includes null)
It will never return anything.
0
 
cyberkiwiCommented:
For not in (... includes null)
It will never return anything. -- except when ansi_nulls is off

good programming practice indicates nulls should never be in an -in- list, i.e. filter it out

in (select i from tbl where i is not null)
0
 
Kyle AbrahamsSenior .Net DeveloperCommented:
could also do:

select first from one where first not in (select isnull(second,'') from two)

0
 
Racim BOUDJAKDJIDatabase Architect - Dba - Data ScientistCommented:
NULL are not a value but a marker for missing value.  The best way to do design is to avoid using them at any cost.

SELECT * FROM SOMETABLE WHERE NULL=NULL
produces the same as
SELECT * FROM SOMETABLE WHERE NULL<>NULL

0
 
anushahannaAuthor Commented:
phew.. will be careful with that one.. thanks for the example to make it easy..

really appreciate it..
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Microsoft Azure 2017

Azure has a changed a lot since it was originally introduce by adding new services and features. Do you know everything you need to about Azure? This course will teach you about the Azure App Service, monitoring and application insights, DevOps, and Team Services.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now