How to use NULL or empty string in SQL

SqlSql ServerNullWhere

Sql Problem Overview


I would like to know how to use NULL and an empty string at the same time in a WHERE clause in SQL Server. I need to find records that have either null values or an empty string. Thanks.

Sql Solutions


Solution 1 - Sql

Select *
From Table
Where (col is null or col = '')

Or

Select *
From Table
Where IsNull(col, '') = ''

Solution 2 - Sql

If you need it in SELECT section can use like this.

SELECT ct.ID, 
       ISNULL(NULLIF(ct.LaunchDate, ''), null) [LaunchDate]
FROM   [dbo].[CustomerTable] ct

You can replace the null with your substitution value.

Solution 3 - Sql

You can simply do this:

SELECT *
FROM   yourTable
WHERE  yourColumn IS NULL OR yourColumn = ''

Solution 4 - Sql

SELECT *
FROM   TableName
WHERE  columnNAme IS NULL OR 
       LTRIM(RTRIM(columnName)) = ''

Solution 5 - Sql

To find rows where col is NULL, empty string or whitespace (spaces, tabs):

SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')=''

To find rows where col is NOT NULL, empty string or whitespace (spaces, tabs):

SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')<>''

Solution 6 - Sql

Some sargable methods...

SELECT *
FROM #T
WHERE SomeCol = '' OR SomeCol IS NULL;

SELECT *
FROM #T
WHERE SomeCol = '' 
UNION ALL
SELECT *
FROM #T
WHERE  SomeCol IS NULL;

SELECT *
FROM #T
WHERE EXISTS ((SELECT NULL UNION SELECT '') INTERSECT SELECT SomeCol);

And some non-sargable ones...

SELECT *
FROM #T
WHERE IIF(SomeCol <> '',0,1) = 1;

SELECT *
FROM #T
WHERE NULLIF(SomeCol,'') IS NULL;

SELECT *
FROM #T
WHERE ISNULL(SomeCol,'') = '';

Solution 7 - Sql

my best solution :

 WHERE  
 COALESCE(char_length(fieldValue), 0) = 0

COALESCE returns the first non-null expr in the expression list().

if the fieldValue is null or empty string then: we will return the second element then 0.

so 0 is equal to 0 then this fieldValue is a null or empty string.

in python for exemple:

def coalesce(fieldValue):
    if fieldValue in (null,''):
        return 0

good luck

Solution 8 - Sql

You could use isnull function to get both null and empty values of a text field:

SELECT * FROM myTable
WHERE isnull(my_nullable_text_field,'') = ''

Solution 9 - Sql

This is ugly MSSQL:

CASE WHEN LTRIM(RTRIM(ISNULL([Address1], ''))) <> '' THEN [Address2] ELSE '' END

Solution 10 - Sql

SELECT *
FROM   Table
WHERE  column like '' or column IS NULL OR LEN(column) = 0

Solution 11 - Sql

select 
   isnull(column,'') column, * 
from Table  
Where column = ''

Solution 12 - Sql

--setup
IF OBJECT_ID('tempdb..#T') IS NOT NULL DROP TABLE #T;
CREATE TABLE #T(ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, NAME VARCHAR(10))
INSERT INTO #T (Name) VALUES('JOHN'),(''),(NULL);
SELECT * FROM #T
 1	JOHN
 2	-- is empty string
 3	NULL

You can examine '' as NULL by converting it to NULL using NULLIF

--here you set '' to null
UPDATE #T SET NAME = NULLIF(NAME,'')
SELECT * FROM #T 
 1	JOHN
 2	NULL
 3	NULL

or you can examine NULL as '' using SELECT ISNULL(NULL,'')

-- here you set NULL to ''
UPDATE #T SET NAME = ISNULL(NULL,'') WHERE NAME IS NULL
SELECT * FROM #T
1	JOHN
2	-- is empty string
3	-- is empty string

--clean up
DROP TABLE #T

Solution 13 - Sql

In sproc, you can use the following condition:

DECLARE @USER_ID VARCAHR(15)=NULL --THIS VALUE IS NULL OR EMPTY DON'T MATTER
IF(COALESCE(@USER_ID,'')='')
PRINT 'HUSSAM'

Solution 14 - Sql

by this function:

ALTER FUNCTION [dbo].[isnull](@input nvarchar(50),@ret int = 0)
RETURNS int
AS
BEGIN
	
	return (case when @input='' then @ret when @input is null then @ret else @input end)

END

and use this:

dbo.isnull(value,0)

Solution 15 - Sql

SELECT * FROM DBO.AGENDA
WHERE 
  --IF @DT_START IS NULL OR EMPTY
  ( ISNULL( @DT_START,'' ) = '' AND DT_START IS NOT NULL ) -- GET ALL DATE
  OR --ELSE
  ( DT_START >= @DT_START ) --FILTER

-- MORE FILTER

SELECT * FROM DBO.AGENDA
WHERE 
  ( ( ISNULL( @DT_START,'' ) = '' AND DT_START IS NOT NULL ) OR ( DT_START >= @DT_START ) ) 
  AND
  DT_END < GETDATE()

Solution 16 - Sql

youe check null With IS NULL and string Empty With LEN(RTRIM(LTRIM(Column))) = 0 in

SELECT *
FROM AppInfra.Person
WHERE   LEN(RTRIM(LTRIM(NationalCode))) = 0 OR  NationalCode IS NULL

Solution 17 - Sql

You can use in as another method

Select *
From Table
Where column in(null, '')

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionposhanView Question on Stackoverflow
Solution 1 - SqlcodingbadgerView Answer on Stackoverflow
Solution 2 - SqlSameera R.View Answer on Stackoverflow
Solution 3 - SqlPraveen NambiarView Answer on Stackoverflow
Solution 4 - SqlJohn WooView Answer on Stackoverflow
Solution 5 - SqlScott SterlingView Answer on Stackoverflow
Solution 6 - SqlMartin SmithView Answer on Stackoverflow
Solution 7 - SqlAnouar MokhtariView Answer on Stackoverflow
Solution 8 - SqlAlberto De CaroView Answer on Stackoverflow
Solution 9 - SqlADM-ITView Answer on Stackoverflow
Solution 10 - SqlCharaf JRAView Answer on Stackoverflow
Solution 11 - Sqlchandu komatiView Answer on Stackoverflow
Solution 12 - SqlBiniam EyakemView Answer on Stackoverflow
Solution 13 - Sqlmohammed hussamuddin hussamuddView Answer on Stackoverflow
Solution 14 - SqlMohsen.SharifyView Answer on Stackoverflow
Solution 15 - SqlVinicius.BeloniView Answer on Stackoverflow
Solution 16 - SqlAlireza ShabaniView Answer on Stackoverflow
Solution 17 - SqlYasin UYSALView Answer on Stackoverflow