- blogs:
- cles::blog
« goo検索に「ブログ除外」機能 :: ソフトウェア・テストの技法 第2版 »
2006/08/01

MySQLの正規表現で日本語を使えるようにする

MySQL は日本語の処理が怪しいところがあり、LIKE などは大丈夫なのですが、REGEXP は日本語が正しく扱えません。
昔、この仕様を知らずにREGEXP を使ってしまいエライ目にあったことがありますが、その時に「これって正規表現エンジンの日本語対応だけだから、誰か Oniguruma あたりを組み込んだモジュールを作ってくれてないかなぁ」いうことがふと頭をよぎったんですが、納期が近かったのでろくに調べもしないでそのままになっていました。
やっぱり同じことを考えてる人がいるものなんですね、mregexpというそのものずばりのプロダクトを見つけてしまいました。
今のところ(mysql 4.0.18, 4.1.1)、MySQLのREGEXP関数は日本語を正しく処理できない(一方、LIKEやSUBSTRINGなどは日本語の処理に対応している)。 そこで日本語を正しく扱える正規表現関数、mregexpというものをユーザー定義関数(UDF=User Defined Function)という仕組みを用いて作った。
SQL において Where節 に REGEXP を使うというのはパフォーマンスを考えるとあまり薦められない*1わけですが、場合によってはどうしても使わざるを得ないような状況になることがあります。そういうときにはこのプロダクトは大活躍しそうですね。
パフォーマンスがかなり気になるところですが、プロダクトのページのベンチマークによるときちんと LIKE などを併用して MySQL にテーブルをフルスキャンさせないように工夫すれば大丈夫なようです。
- *1: インデックスが使われなくなってしまうので。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/1518
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
« goo検索に「ブログ除外」機能 :: ソフトウェア・テストの技法 第2版 »
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112079)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110711)
3 . 年次の人間ドックへ(110324)
4 . 2023 年分の確定申告完了!(1つめ)(109873)
5 . 三菱鉛筆がラミーを買収(109779)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110711)
3 . 年次の人間ドックへ(110324)
4 . 2023 年分の確定申告完了!(1つめ)(109873)
5 . 三菱鉛筆がラミーを買収(109779)
cles::blogについて
Referrers