、私はこのような何かを行うことができます知っている:しかしMySQLでは、比較が1つしかないフィールドがNULLか空であるかどうかを確認できますか?私はフィールドがNULLまたはMySQLのクエリを使用して空であるかどうかを確認したい場合は
column = '' OR column IS NULL
、別々の2を実行せずにこれをチェックする方法はあります比較?
、私はこのような何かを行うことができます知っている:しかしMySQLでは、比較が1つしかないフィールドがNULLか空であるかどうかを確認できますか?私はフィールドがNULLまたはMySQLのクエリを使用して空であるかどうかを確認したい場合は
column = '' OR column IS NULL
、別々の2を実行せずにこれをチェックする方法はあります比較?
これを試してみてください:NOTなし
WHERE NOT(column LIKE '_%')
を、列の値は、少なくとも一つの文字を持っている必要がありますし、NULL
をすることはできません。
編集:MySQLはまだこの方法でNULL値を飲み込んでいるようです。これは、より良い動作するはず:
WHERE IFNULL(column, '') = ''
「正規化」に使用COALESCE()
値(空の文字列にNULL値を変換します)。
WHERE COALESCE(mycolumn, '') = ''
ドキュメント読む:COALESCE()
あるいは他の方法で回避します。空の文字列をNULLに変換します。
WHERE NULLIF(mycolumn, '') IS NULL
ドキュメント:それはあなただけでこれを行う、それを自分で試すことができ、標準
ANSI SQLの一部であるとして、それら二つのNULLIF()
、私は)(COALESCEを好むだろう。
SELECT
mycolumn AS orig_value,
COALESCE(mycolumn, '') AS coalesce_value,
(COALESCE(mycolumn, '') = '') AS compare_result
FROM mytable;
これは、元の値、「合体」値と、これをしようとせずWHEREテーブル
この否定版は 'WHERE COALESCE(mycolumn、 '')<> '''ですか? – vertigoelectric
はい、COALESCEは**最初のNULL以外の値**を返します。したがって、 'mycolumn'が' NULL'の場合、 ''を返します。 'mycolumn'が他の値*(空文字列を含む)であれば、' mycolumn'の値が返されます。 – thaJeztah
@vertigoelectricこの質問を「回答済み」とすることはできますか? – thaJeztah
別の方法で行ごとに並べて比較側の結果が表示されます..
空とNULLが
SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename
値の両方を選択します[動作するようには思えない](http://sqlfiddle.com/#!9/e6c26/ 1) – Kermit