domaframework/doma — pull request #29 by nakamura-to (2014-05-22 21:36:19+00:00)
Title: [WIP] 検索条件のバインド変数が null の場合に自動で SQL の IS NULL へ書き換える

バインド変数の値が 非 `null` であれば `=` による比較、`null` であれば `IS NULL` 句による比較をしたいといった場合、これまではSQLファイル上で明示的な条件分岐が必要でした。

```sql
select * from emp where
/*%if name != null*/
ename = /*name*/'hoge'
/*%else */
and
ename is null
/*%end */
```

この記述は煩雑なので、自動で `IS NULL` への書き換えを行います。
この Pull Request をマージすると次のように書いても上記と同等の意味になります。

```sql
select * from emp where ename = /*name*/'hoge'
```

また、 同様に、`<>` や `!=` による比較は、 `IS NOT NULL` を使った比較に書き換えます。

この自動書き換えは、次の条件を満たした場合にのみ行います。

- `SELECT` 、`WHERE` 、 `HAVING` 句の中
- `=` 、 `<>` 、`!=` といった演算子の直後でバインド変数が使われている（ただし、演算子とバインド変数の間に空白が入っても良い）