如何在 SQL 中使用 NULL 或空字符串

我想知道如何在 SQLServer 中的 WHERE子句中同时使用 NULL 和空字符串。我需要查找具有空值或空字符串的记录。谢谢。

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

你可以这样做:

SELECT *
FROM   yourTable
WHERE  yourColumn IS NULL OR yourColumn = ''
Select *
From Table
Where (col is null or col = '')

或者

Select *
From Table
Where IsNull(col, '') = ''
SELECT *
FROM   Table
WHERE  column like '' or column IS NULL OR LEN(column) = 0

您可以使用 isnull函数来获取文本字段的 null和空值:

SELECT * FROM myTable
WHERE isnull(my_nullable_text_field,'') = ''
--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

通过使用 NULLIF''转换为 NULL,可以将 ''检查为 NULL

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

或者您可以使用 SELECT ISNULL(NULL,'')检查 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

这是丑陋的 MSSQL:

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

要查找 coll 为 NULL、空字符串或空格(空格、制表符)的行:

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

要查找 coll 为 NOT NULL、空字符串或空格(空格、制表符)的行:

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

一些 下士方法..。

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);

还有一些没有下流的。

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


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


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

如果你需要它在 选择节可以这样使用。

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

可以用替换值替换 null

我的最佳解决方案:

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

COALESCE 返回表达式 list ()中的第一个非空 expr。

如果 fieldValue 为 null 或空字符串,那么: 我们将返回第二个元素,然后0。

所以0等于0,那么 fieldValue 是一个 null 或空字符串。

例如:

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

祝你好运

在 sproc 中,可以使用以下条件:

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

通过这个函数:

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

用这个:

Isnull (值,0)

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()

您可以用 IS NULL 检查 NULL,用 LEN 检查字符串 Empty (RTRIM (LTRIM (Column))) = 0 进去

SELECT *
FROM AppInfra.Person
WHERE   LEN(RTRIM(LTRIM(NationalCode))) = 0 OR  NationalCode IS NULL
select
isnull(column,'') column, *
from Table
Where column = ''

可以使用 作为另一种方法

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