MDB2で空文字がNULLになるのを抑制するには、portabilityオプションを変更する必要があるそうな。

MDB2で空文字がNULLになるのを抑制するには、portabilityオプションを変更する必要があるそうな。

 古い記事なので既に解決してるのかもしれませんが。僕はさっきはまったのでメモ。

「SELECT * FROM users WHERE email = ''」

ではなくて、

「SELECT * FROM users WHERE email = NULL」

SQL式が評価されているような気がする。MDB2で空文字がbindされるとNULLになっている気がする

 MDB2の可搬性に関する説明によると、デフォルトで

  • MDB2_PORTABILITY_EMPTY_TO_NULL

入出力データの空文字列を null に変換します。 Oracle は空の文字列を null と判断するため、これが必要になります。 一方、他の大半の DBMS は空の文字列と null を区別します。

――になっているので、変更する必要があるみたい。

 ……Oracleうぜえ*1

*1:前にそれで面倒なことになってたのを思い出した。