須藤裕嗣
sudo4****@gmail*****
2013年 4月 25日 (木) 18:03:18 JST
ご回答いただき、ありがとうございます。 エスケープをもう一つ増やしたら解決いたしました。 2013年4月25日 17:08 Kouhei Sutou <kou****@clear*****>: > 須藤です。 > > In <CAFO8****@mail*****> > "[groonga-dev,01327] mroongaで記号のエスケープしていますがエラーになってしまいます" on Thu, 25 Apr > 2013 16:55:19 +0900, > 須藤裕嗣 <sudo4****@gmail*****> wrote: > > > mroongaの3.0.1を利用しています。 > > 以下のSQLを流すとエラーになってしまうのですが、どのように対応すればいいのでしょうか > > > > select [フィールド名] from [テーブル名] where MATCH(`message`) AGAINST('+"aa\">aa"' > IN > > BOOLEAN MODE); > > > > '+"aa\">aa"' > > ここの箇所なのですが、↓の場合はエラーになりません > > '+"aa\"aa"' > > やりたいことは「aa">aa」という文字列を検索する、ということで > よいでしょうか? > > もうひとつ「\」を増やして > > '+"aa\\">aa"' > > とするとよいと思います。 > > たぶん、MySQLが「'...'」を解釈するときに「'...'」の中の「\」 > を処理してしまっていて、groongaに渡るときには > > 「'...\"...'」 > > が > > 「'..."...'」 > > になっているのだと思います。なので、MySQLが解釈するときのた > めにもうひとつ「\」でエスケープして > > 「'...\\"...'」 > > とすると、groongaに渡るときには > > 「'...\"...'」 > > となり、最終的に > > 「..."...」 > > と解釈されると思います。 > > -- > 須藤 功平 <kou****@clear*****> > 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) > > groongaサポート: > http://groonga.org/ja/support/ > パッチ採用はじめました: > http://www.clear-code.com/recruitment/ > コミットへのコメントサービスはじめました: > http://www.clear-code.com/services/commit-comment.html > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/groonga-dev >