新しい記事を書く事で広告が消せます。
PreparedStatementのLIKE条件
JDBC の PreparedStatement で LIKE 条件にワイルドカード付きでプレースホルダ (?) を設定する場合:
stmt = con.prepareStatement( |
または SQL 内で % と連結させて:
stmt = con.prepareStatement( |
下の記述のほうがパラメータ設定時に LIKE を意識しなくても良さそうに見えるわけだが、後述するようにこれも結局は LIKE を意識しなければならない。どちらか良いかは単に好みの問題だろう。
シングルクォートで囲まれたプレースホルダは静的な文字列と見なされるため、以下のように記述するのは間違い。
stmt = con.prepareStatement( |
LIKE 条件に埋め込む値はワイルドカードがそのまま通ってしまうので、設定前にエスケープが必要。JDBC ではワイルドカードと見なしたくない % と _ の前に \ を置いてやれば良い。以下の例は 「100% Pure Java」で始まるレコードを検索する。
stmt = con.prepareStatement( |