こんな感じのSQLがあったとします。
Select Count(yyyy) From hoge Where yyyy = '2014'
※hogeテーブルのyyyyが'2014'の件数を数えています
これをプログラム(Javaぽく)で書くと
string stryyyy = "2014"
String sql = "Select Count(yyyy) From hoge Where yyyy = '" + stryyyy + "'";
こんな感じになりますね
仮にyyyyの引数が無いとこんな感じになります
String sql = "Select Count(yyyy) From hoge;
このWhere句のありなしがメンドクサイ
更に、下記の様に次の条件値が出てくると、And付けたりと
もうイヤになりますw
Select Count(yyyy) From hoge Where yyyy = '2014' and mm = '04'
これを解決する方法がこちらの書き方
Select Count(yyyy) From hoge Where 0=0 and yyyy = '2014' And mm = '04'
Whereの次に0=0を付けてしまいます
0=0は常に真となり、全件という意味です。
0=0を付けたからと言ってレスポンスには一切影響が出ません
これを踏まえてSQLを作るプログラム部分を書くとこうなります。
String sql = "Select Count(yyyy) From hoge Where 0=0";
if
yyyy != null && yyyy.length() > 0 {sql = sql + " And yyyy='" + yyyy + "'";
}
if
mm != null && mm.length() > 0 {sql = sql + " And mm ='" + mm + "'";
}
最初から、0=0と条件が付いているのでWhereを書いたり、Andを気にしたりする必要がありません
知ってる人は知っている
知らない人はしらない
そんな裏ワザチックな小ネタでした