Search
Calendar
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<< December 2018 >>
Sponsored links
テツ
ぷろふぃーる
お知らせ
MacIEでは、画像をクリックした際の拡大表示が正しく表示されないっぽいです。ご了承下さい・・・。
成分解析
前田商会の成分解析占い
 
カウンタ
New Entries
Recent Comment
Recent Trackback
Category
Archives
Profile
Links
mobile
qrcode
RSSATOM 無料ブログ作成サービス JUGEM
スポンサーサイト

一定期間更新がないため広告を表示しています

posted by: スポンサードリンク | - | | - | - |-
MySQLでLIKE検索
文字コードがUTF-8の中国語を扱うCGIを作っていて問題にブチあたった。

MySQLのLIKE検索で、意図するものがヒットしないのだ。
色々調べた結果、REGEXPを使うと良いらしい。

※但し、REGEXPはレスポンスが遅い
 (例)レコードが100万件あった場合の検索処理時間
   LIKE→6秒
   REGEXP→30秒

■リンク
REGEXP


MySQLの保存文字エンコードがEUCで、PHPスクリプトがEUCである。
これで検索スクリプトを作っていて、パターンマッチング演算子「LIKE」を使っていたのだが、どうも変な感じでヒットする。たとえば魚へんの「鱒」で「鱗造」がヒットしてしまうのだ。これが長い文字列なら問題ないので、まあいいかと思っていて、ふと正規表現によるパターンマッチング演算子「REGEXP」を使ったらまったく問題なく検索されることがわかった。

つまり、
WHERE target LIKE '%〜%'
ではなくて、
WHERE target REGEXP '〜'
を使えば問題ない。

エンコードがUTF-8の場合でも同様のことが言える。
posted by: テツ | 雑記 | 12:35 | comments(0) | - |-
スポンサーサイト
posted by: スポンサードリンク | - | 12:35 | - | - |-