Answers:
如果您只想将“”匹配为空字符串
WHERE DATALENGTH(COLUMN) > 0
如果要将所有完全由空格组成的字符串计为空
WHERE COLUMN <> ''
NULL
当在WHERE
子句中使用时,这两个都不会返回值。至于NULL
将评估UNKNOWN
这些而不是TRUE
。
CREATE TABLE T
(
C VARCHAR(10)
);
INSERT INTO T
VALUES ('A'),
(''),
(' '),
(NULL);
SELECT *
FROM T
WHERE C <> ''
仅返回单行A
。即该NULL
查询排除具有或为空字符串或完全由空格组成的字符串的行。
column
有索引,那么您的查询可能不会使用它
合并将空值折叠为默认值:
COALESCE (fieldName, '') <> ''
基本地
SELECT *
FROM [TableName]
WHERE column_name!='' AND column_name IS NOT NULL
只需检查:其中值>''-不为null也不为空
-- COLUMN CONTAINS A VALUE (ie string not null and not empty) :
-- (note: "<>" gives a different result than ">")
select iif(null > '', 'true', 'false'); -- false (null)
select iif('' > '', 'true', 'false'); -- false (empty string)
select iif(' ' > '', 'true', 'false'); -- false (space)
select iif(' ' > '', 'true', 'false'); -- false (tab)
select iif('
' > '', 'true', 'false'); -- false (newline)
select iif('xxx' > '', 'true', 'false'); -- true
--
--
-- NOTE - test that tab and newline is processed as expected:
select 'x x' -- tab
select 'x
x' -- newline
WHERE COALESCE(column, '') <> ''
呢?