Mar*_*ith 275
如果您只想将""匹配为空字符串
WHERE DATALENGTH(COLUMN) > 0
Run Code Online (Sandbox Code Playgroud)
如果要将任何完全由空格组成的字符串计为空
WHERE COLUMN <> ''
Run Code Online (Sandbox Code Playgroud)
NULL在WHERE子句中使用时,这两个都不会返回值.正如NULL将评估UNKNOWN这些而不是TRUE.
CREATE TABLE T
(
C VARCHAR(10)
);
INSERT INTO T
VALUES ('A'),
(''),
(' '),
(NULL);
SELECT *
FROM T
WHERE C <> ''
Run Code Online (Sandbox Code Playgroud)
只返回单行A.即具有NULL或者空字符串的行或者完全由空格组成的字符串都被此查询排除.
one*_*hen 99
WHERE NULLIF(your_column, '') IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
如今(4.5年),为了让人们更容易阅读,我会使用
WHERE your_column <> ''
Run Code Online (Sandbox Code Playgroud)
虽然有诱惑使空检查明确...
WHERE your_column <> ''
AND your_column IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
......正如@Martin Smith在接受的答案中所展示的那样,它并没有真正添加任何内容(我个人现在完全避免使用SQL null,所以它无论如何都不适用于我!).
Ano*_*rma 13
Coalesce会将空值折叠为默认值:
COALESCE (fieldName, '') <> ''
Run Code Online (Sandbox Code Playgroud)
一种友好的索引方式是:
where (field is not null and field <> '')
Run Code Online (Sandbox Code Playgroud)
如果行数不多或此字段未编入索引,则可以使用:
where isnull(field,'') <> ''
Run Code Online (Sandbox Code Playgroud)
您可以使用其中任何一种来检查 null、空格和空字符串。
WHERE COLUMN <> ''
WHERE LEN(COLUMN) > 0
WHERE NULLIF(LTRIM(RTRIM(COLUMN)), '') IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
小智 6
基本地
SELECT *
FROM [TableName]
WHERE column_name!='' AND column_name IS NOT NULL
Run Code Online (Sandbox Code Playgroud)