MySQLクエリを使用してフィールドがNULLまたは空かどうかを確認したい場合は、次のようなことができることを知っています。
column = '' OR column IS NULL
ただし、2つの個別の比較を行わずにこれを確認する方法はありますか?
COALESCE()
を使用して値を「正規化」します(NULL値を空の文字列に変換します)。
_WHERE COALESCE(mycolumn, '') = ''
_
ドキュメントを読む: COALESCE()
またはその逆;空の文字列をNULLに変換します。
_WHERE NULLIF(mycolumn, '') IS NULL
_
ドキュメント: NULLIF()
これら2つのうち、ANSI SQL標準の一部であるCOALESCE()を好むでしょう。
あなたはそれを自分で試すことができます、これをしてください。
_SELECT
mycolumn AS orig_value,
COALESCE(mycolumn, '') AS coalesce_value,
(COALESCE(mycolumn, '') = '') AS compare_result
FROM mytable;
_
これにより、元の値、「合体」値、および表のすべての行の比較結果が並べて表示されます。
WHERE COALESCE(column, '') = ''
WHEREを使用しない別の方法、これを試してください。
空の値とNULL値の両方を選択します
SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename
これを試して:
WHERE NOT(column LIKE '_%')
NOTがない場合、列の値は少なくとも1文字である必要があり、NULL
にはできません。
編集:MySQLはまだこの方法でNULL値を飲み込むようです。これはもっとうまくいくはずです:
WHERE IFNULL(column, '') = ''