我们如何在SQL Server WHERE条件下检查列是否不为空,而不是空字符串(“)?
当前回答
您可以使用其中任何一个来检查null,空白和空字符串。
WHERE COLUMN <> ''
WHERE LEN(COLUMN) > 0
WHERE NULLIF(LTRIM(RTRIM(COLUMN)), '') IS NOT NULL
其他回答
由于某种原因,我的NULL值的数据长度为8。这就是为什么上面提到的方法似乎都不起作用。如果你遇到同样的问题,使用下面的代码:
--Check the length of your NULL values
SELECT DATALENGTH(COLUMN) as length_column
FROM your_table
--Filter the length of your NULL values (8 is used as example)
WHERE DATALENGTH(COLUMN) > 8
如果您只想将""匹配为空字符串
WHERE DATALENGTH(COLUMN) > 0
如果您想将完全由空格组成的字符串计算为空
WHERE COLUMN <> ''
当在WHERE子句中使用时,这两个函数都不会返回NULL值。As NULL将这些值计算为UNKNOWN而不是TRUE。
CREATE TABLE T
(
C VARCHAR(10)
);
INSERT INTO T
VALUES ('A'),
(''),
(' '),
(NULL);
SELECT *
FROM T
WHERE C <> ''
只返回单行a,即带有NULL或空字符串或完全由空格组成的字符串的行都将被此查询排除。
SQL小提琴
以基本的方式
SELECT *
FROM [TableName]
WHERE column_name!='' AND column_name IS NOT NULL
您可以使用其中任何一个来检查null,空白和空字符串。
WHERE COLUMN <> ''
WHERE LEN(COLUMN) > 0
WHERE NULLIF(LTRIM(RTRIM(COLUMN)), '') IS NOT NULL
WHERE NULLIF(your_column, '') IS NOT NULL
如今(4.5年过去了),为了让人类更容易阅读,我只会使用它
WHERE your_column <> ''
虽然有一种将null检查显式化的诱惑……
WHERE your_column <> ''
AND your_column IS NOT NULL
...正如@Martin Smith在接受的答案中所演示的那样,它实际上没有添加任何东西(而且我个人现在完全避免使用SQL空,所以它对我不适用!)