WHERE句の空白が想定したとおり絞込条件にならない

いろいろと謎な仕様にぶつかるDB2

WHEREで空白の数が無視されるというか、そんな挙動にぶつかってなんだかなぁ、な感じ(;´∀`)

CREATE TABLE TESTTABLE1 ( COL1 CHAR(10) DEFAULT '△', COL2 VARCHAR(10) DEFAULT '△')

CHARとVARCHARの列を作り、デフォルトを空白1個に指定しておきます。

(わかりづらいので、空白文字を△で書いてます。)

INSERT INTO TESTTABLE1(COL1) VALUES('ABCDE')
INSERT INTO TESTTABLE1(COL2) VALUES('ABCDE')
INSERT INTO TESTTABLE1(COL1, COL2) VALUES('△△△△△△', 'KKKKKKK')
INSERT INTO TESTTABLE1(COL1, COL2) VALUES('BBBBBBBB','△△△△△△')

列の値を指定しなかった場合、DEFAULTの値が入ってくるはずですね。

db2 => SELECT * FROM TESTTABLE1 WHERE COL1 IS NULL

COL1       COL2
 ---------- ----------

  0 レコードが選択されました。

db2 => SELECT * FROM TESTTABLE1 WHERE COL2 IS NULL

COL1       COL2
 ---------- ----------

  0 レコードが選択されました。

という風に、確かにIS NULLでは引っかからなくなります。

もちろん、空白文字でWHEREすればヒットします。

db2 => SELECT * FROM TESTTABLE1 WHERE COL1 = '△'

COL1       COL2
 ---------- ----------
           ABCDE
  1 レコードが選択されました。

db2 => SELECT * FROM TESTTABLE1 WHERE COL2 = '△'

COL1       COL2
 ---------- ----------
ABCDE
  1 レコードが選択されました。

まあ、ここまでは想定した通り。

なんですが、ここで、空白文字複数で検索してみると

db2 => SELECT * FROM TESTTABLE1 WHERE COL1 = '△△△△△△'

COL1       COL2
 ---------- ----------
           ABCDE
           KKKKKKK

db2 => SELECT * FROM TESTTABLE1 WHERE COL2 = '△△△△△△'

COL1       COL2
 ---------- ----------
ABCDE
BBBBBBBB

ええええええ ('A`)