[Seasar-user:22030] Re: 【DBFlute】OracleでのLikeSerachのエスケープ処理自動解決について

kubo [E-MAIL ADDRESS DELETED]
2015年 1月 21日 (水) 14:04:03 JST


久保(jflute)です

成田さん、こんにちは

取り急ぎですが、こちらのやり取りを読んでくださいませ。

// Oracle11gR2でLike検索でエラーになるケース
https://groups.google.com/forum/#!topic/dbflute/LzuHYseRtmA

特にこの辺:
> Oracleのバグのようです。(11.2.0.3.0のみ。11.2.0.4.0、12cでは直っているようです。)
> http://www.eygle.com/Notes/1562142.1-BugList-11.2.0.4.html
> のリンク[14157408」
> ※リンク先は、Oracleのサポート契約が必要。

Oracleの詳細なバージョンを調べてみてください。
回避できないようであれば、DBDef.switchDBWay()を使うとう流れですね。


2015-01-21 13:49 GMT+09:00 mitsu <trickster.m.3 @ gmail.com>:
> お世話になります。成田と申します。
>
> 以下の環境にて開発をしておりますが確認したいことがあります。
>
> DBFlute:1.0.5L
> DB:Oracle11gR2
>
> 全角パーセントで検索を実行するとエスケープ対象となり
> エラーとなってしまいます。
> エスケープせずに検索実行したいのですが
> ご教授いただけますでしょうか。
> ※半角については想定通りの動きです。
>
> DBFluteの仕様より、「全角がワイルドカードにならないDBMSでも、
> そのエスケープ文字は単に無視されるだけですので動作に影響はありません。」
> とありますが、バージョンによる差異なのか、こちらの解釈の違いなのか・・・
> 現状その仕様とは異なる動きをしていると見ております。
>
> 以下ページ参照
> http://dbflute.seasar.org/ja/manual/function/ormapper/conditionbean/query/likesearch.html
>
> 出力されたエラーですが、以下が出力されています。
> 外だしSQLで、「likeContain!!」を指定しています。
>
> [SQLException]
> java.sql.SQLDataException
> ORA-01424: エスケープ文字に続く文字がないか、または無効です。
>
> ~~SQLログ抜粋~~
> hoge_name like '%|%%' escape '|'
> ~~SQLログ抜粋~~
>
> Oracleについては、全角パーセントは無視されずに
> エスケープされる仕様なのでしょうか。
> アプリ側で対応するべきかの判断にも影響してくるため
> ご確認のほどお願いいたします。
>
> --
>
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


Seasar-user メーリングリストの案内