プロが教える店舗&オフィスのセキュリティ対策術

キーワード \P が部分一致で検索できない。

mysqlをutf8_unicode_ciで使っています。

検索キーワードに\Pと入力し、部分一致で検索すると、OMP,EEP等\Pと部分一致していない
データも検索結果に表示されてこまっています。

\(バックスラッシュ)は特別な文字なので、\Pと入力しても、\(バックスラッシュ)は無視され、キーワード 「P」で検索されているようです。

今しようとしていることは、
検索キーワードを暗号化し、暗号化したキーワードで検索する処理です。
暗号化したキーワードはかなりの確立で\(バックスラッシュ)が含まれるので、
\(バックスラッシュ)を普通の文字列として検索したいです。

具体的には
select * from testtbl where test like '%\\P%'
このようなSQL分を実行した時、OMPやEEPが合致しないようにしたいのです。

よくわからなくなってきたので、アドバイス宜しくお願いします。

A 回答 (2件)

パターン・マッチング時にもう一回取り除かれるので、これを試してください。



select * from testtbl where test like '%\\\\P%'
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
\を\\\\に変更したら検索できました。

お礼日時:2010/10/14 13:47

どうやってその SQL 文を実行しているか知らんけど, 「バックスラッシュが足りない」というお約束なネタをまず最初に想定する.

    • good
    • 0
この回答へのお礼

バックスラッシュが足りなかったようです。
まだ、phpmyadminにsql文を手入力し、検索結果を確かめている段階なので、
プログラムでバックスラッシュの数を変更しようと思います。

バックスラッシュの数を変更せずに検索するのはやはり無理なのでしょうか。

お礼日時:2010/10/14 13:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!