SQLの条件式で文字列項目のデータなし(NULLではない複数の空白)を判断する方法
2017/2/2
文書番号:20681
SQL で文字列型のデータに対して空白であることを条件式で判断したいときの方法です。
CHAR型の項目やVARCHAR型の項目で「NULL」ではなく、「いくつかの空白(スペース)がセットされている」という場合です。
CHAR型の場合はひとつ以上の半角スペースをセットすると、データサイズ分いっぱいに半角スペースがセットされますので
CHAR(10)の項目の場合、WHERE句に半角スペース10個を指定すれば判断することもできます。
WHERE COL01 = ' '
WHERE COL01 IS NULL
OR COL01 = ' '
例えばVARCHAR(10)だとすると、半角スペースが1個、2個、・・・10個の場合があり得るのです。
上記のように「NULLもしくは空白のもの」を条件指定したい場合は以下のようになってしまいます。
WHERE COL01 IS NULL
OR COL01 = ' '
OR COL01 = ' '
OR COL01 = ' '
・・・
OR COL01 = ' '
そもそも、そのような状況になる設計やツクリが悪いのですが、それはもうどうしようもなくて、でもこれを判断しないといけない場合はスマートに以下のように指定できます。
WHERE trim(COL01) IS NULL
(CHAR型でも VARCHAR 型でも同じです。)
ですので「TRIM(列名) IS NULL」 で判断することができます。