SQL ServerのWHERE条件で、列がnullではなく空の文字列('')ではないかどうかを確認するにはどうすればよいですか?
SQL ServerのWHERE条件で、列がnullではなく空の文字列('')ではないかどうかを確認するにはどうすればよいですか?
回答:
空の文字列として「」のみを一致させたい場合
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インデックスがあるなら、あなたのクエリはおそらくそれを使わないでしょう
ただチェックしてください: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, '') <> ''?