50

How do you write a SELECT statement that only returns rows where the value for a certain column is null?

Annabelle
  • 10,596
  • 5
  • 27
  • 26
anjum
  • 2,363
  • 6
  • 28
  • 25
  • 7
    Please make your question a bit clearer, it's almost impossible to determine what you're asking for here.. – Rob Jul 30 '10 at 06:09
  • 2
    Very inadequate information in your question. You need to show us your database table and columns and make it clearer what you really want to achieve. – Choudhury Saadmaan Mahmid Mar 20 '14 at 08:59

7 Answers7

73

Do you mean something like:

SELECT COLUMN1, COLUMN2 FROM MY_TABLE WHERE COLUMN1 = 'Value' OR COLUMN1 IS NULL

?

Jon Skeet
  • 1,421,763
  • 867
  • 9,128
  • 9,194
8

I'm not sure if this answers your question, but using the IS NULL construct, you can test whether any given scalar expression is NULL:

SELECT * FROM customers WHERE first_name IS NULL

On MS SQL Server, the ISNULL() function returns the first argument if it's not NULL, otherwise it returns the second. You can effectively use this to make sure a query always yields a value instead of NULL, e.g.:

SELECT ISNULL(column1, 'No value found') FROM mytable WHERE column2 = 23

Other DBMSes have similar functionality available.

If you want to know whether a column can be null (i.e., is defined to be nullable), without querying for actual data, you should look into information_schema.

tdammers
  • 20,353
  • 1
  • 39
  • 56
3

Use Is Null

select * from tblName where clmnName is null    
anishMarokey
  • 11,279
  • 2
  • 34
  • 47
2

You want to know if the column is null

select * from foo where bar is null

If you want to check for some value not equal to something and the column also contains null values you will not get the columns with null in it

does not work:

select * from foo where bar <> 'value'

does work:

select * from foo where bar <> 'value' or bar is null

in Oracle (don't know on other DBMS) some people use this

select * from foo where NVL(bar,'n/a') <> 'value'

if I read the answer from tdammers correctly then in MS SQL Server this is like that

select * from foo where ISNULL(bar,'n/a') <> 'value'

in my opinion it is a bit of a hack and the moment 'value' becomes a variable the statement tends to become buggy if the variable contains 'n/a'.

hol
  • 8,255
  • 5
  • 33
  • 59
0

For some reasons IS NULL may not work with some column data type. I was in need to get all the employees that their English full name is missing, I've used:

SELECT emp_id, Full_Name_Ar, Full_Name_En
FROM employees
WHERE Full_Name_En = '' or Full_Name_En is null
MAK
  • 379
  • 3
  • 7
  • That is just searching for records where Full_Name_En is a space...not very helpful in this question dealing with NULL – sonyisda1 Sep 09 '16 at 20:48
0
select Column from Table where Column is null;
Taras Melnyk
  • 3,057
  • 3
  • 38
  • 34
  • Welcome to SO. Code-only answers are not as helpful as answers that have working code plus helpful explanations. In this case, it would be worthwhile explaining this answer to a 5 year old. – Somnath Muluk Nov 05 '15 at 05:49
0

select * from tableName where columnName is null