列がNULLでなく空の文字列(''
)でないかどうかを、SQL ServerのWHERE
条件でチェックするにはどうすればよいですか?空の文字列SQL ServerでIs not NullとIs not Empty文字列をチェックする方法はありますか?
WHERE DATALENGTH(COLUMN) > 0
として
列がNULLでなく空の文字列(''
)でないかどうかを、SQL ServerのWHERE
条件でチェックするにはどうすればよいですか?空の文字列SQL ServerでIs not NullとIs not Empty文字列をチェックする方法はありますか?
WHERE DATALENGTH(COLUMN) > 0
として
あなただけ一致させたい場合は、「」あなたは空
WHERE COLUMN <> ''
としてのスペースで完全に構成される任意の文字列をカウントしたい場合は、これらの両方がNULL
を返しませんがWHERE
句で使用された場合の値。 NULL
は、TRUE
ではなく、UNKNOWN
と評価されます。
CREATE TABLE T
(
C VARCHAR(10)
);
INSERT INTO T
VALUES ('A'),
(''),
(' '),
(NULL);
SELECT *
FROM T
WHERE C <> ''
ただ1行A
を返します。私。 NULL
の行または空の文字列または完全にスペースで構成される文字列は、このクエリによってすべて除外されます。
WHERE NULLIF(your_column, '') IS NOT NULL
今日で(上の4.5年)、それが簡単に人間が読んでできるようにすること、作るために誘惑があるが、私はちょうど
WHERE your_column <> ''
を使用しますヌルチェックは明示的に...
WHERE your_column <> ''
AND your_column IS NOT NULL
... @Martin Smithは受け入れられた答えを示しているので、実際には何も追加しません(私は個人的にはSQL NULLを完全に避けていますので、とにかく私には当てはまりません)。
合体はデフォルトにNULL値を折るます:
COALESCE (fieldName, '') <> ''
この状態は「NULL、空または空白」を実行しますLTRIM
とRTRIM
の不要な文字列操作なしで、確認してください。
SELECT
*
FROM
[Table]
WHERE
COALESCE(PATINDEX('%[^ ]%', [Value]), 0) > 0
これを行うための指標に優しい方法は次のとおりです。
where (field is not null and field <> '')
そこに多くの行がないか、またはこのフィールドがインデックス化されていない場合は、あなたが使用することができます。
where isnull(field,'') <> ''
だけチェック:ここで、値> '' - ヌルで空ではない
-- 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
基本的な方法で
SELECT *
FROM [TableName]
WHERE column_name!='' AND column_name IS NOT NULL
なぜ、WHERE COALESCE(列、 '')<> '' 'はありませんか? –
'column'にインデックスがある場合、クエリはおそらくそれを使用しません – Lamak