人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQLの文字列検索です。
半角カタカナの"ロ"がなぜか"_u"にヒットしてしまいます。
文字コードは Japanese(euc)、mySQLのバージョンは3.23.58。
select "ロ" like "_u"
が1になるのが確認できます。

どういうメカニズムでこういう現象が起こるのでしょうか?(EUCはじめ、UTF-7,8,16,SJIS,JIS、どの文字コードで解釈してもヒットしないはず)
また、解決法(ヒットしなくなる方法)は?

●質問者: Sampo
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:23 EUC JIS MySQL SELECT
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●35ポイント

試していないけど、これが関係あるんじゃ無いでしょうか?

http://www.physalis.net/ss/space/blog/5

◎質問者からの返答

BINARYをつけたところ、確かにヒットしなくなりました。

ケース統一のアルゴリズムに何か問題があるんでしょうかね?

ただ、できればケース非依存で文字列検索をしたいと思っています。

BINARYは指定しないような解決法を引き続き募集します。


2 ● b-wind
●35ポイント

SQL で指定しないだけなら、

http://dev.mysql.com/doc/refman/4.1/ja/create-table.html

CREATE TABLE 時に varchar(255) BINARY と指定しておくことで設定できると思います。

すでに作成しているカラムについては ALTER TABLE で変更します。


カラムにも指定したくなければ MySQL のバージョンをあげるしかないような気がします。

◎質問者からの返答

> MySQL のバージョンをあげる

やはりこれしかありませんか。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ