답변:
빈 문자열로 ""만 일치시키려는 경우
WHERE DATALENGTH(COLUMN) > 0
공백으로 만 구성된 문자열을 비어있는 것으로 계산하려면
WHERE COLUMN <> ''
절 NULL에서 사용될 때 둘 다 값을 반환하지 않습니다 WHERE. 이것 보다는 오히려 NULL평가할 것이다 .UNKNOWNTRUE
CREATE TABLE T
(
C VARCHAR(10)
);
INSERT INTO T
VALUES ('A'),
(''),
(' '),
(NULL);
SELECT *
FROM T
WHERE C <> ''
단일 행만 반환합니다 A. 즉 NULL, 빈 문자열 또는 공백으로 구성된 문자열 이있는 행은 모두이 쿼리에서 제외됩니다.
column인덱스가 있으면 쿼리에서 아마 인덱스를 사용하지 않을 것입니다.
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 null을 완전히 피하므로 어쨌든 나에게는 적용되지 않습니다!).
그냥 확인하십시오 : where value> ''-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, '') <> ''?