半角カタカナの"ロ"がなぜか"_u"にヒットしてしまいます。
文字コードは Japanese(euc)、mySQLのバージョンは3.23.58。
select "ロ" like "_u"
が1になるのが確認できます。
どういうメカニズムでこういう現象が起こるのでしょうか?(EUCはじめ、UTF-7,8,16,SJIS,JIS、どの文字コードで解釈してもヒットしないはず)
また、解決法(ヒットしなくなる方法)は?
SQL で指定しないだけなら、
http://dev.mysql.com/doc/refman/4.1/ja/create-table.html
CREATE TABLE 時に varchar(255) BINARY と指定しておくことで設定できると思います。
すでに作成しているカラムについては ALTER TABLE で変更します。
カラムにも指定したくなければ MySQL のバージョンをあげるしかないような気がします。
> MySQL のバージョンをあげる
やはりこれしかありませんか。
BINARYをつけたところ、確かにヒットしなくなりました。
ケース統一のアルゴリズムに何か問題があるんでしょうかね?
ただ、できればケース非依存で文字列検索をしたいと思っています。
BINARYは指定しないような解決法を引き続き募集します。