2009年4月17日

[mysql 14806] Re: SJISで文字コードがシフト?してしまい検索できない

坂井様

浅山です。いつもお世話になります。

> 不思議ですね。。 mysql> プロンプトから status を叩いた結果が
> みんな cp932 になっていれば、そこからの検索は期待通りにできる
> と思うのですが。。。。(スキーマのcharset, テーブルのcharset と
> もcp932になっているとのことですし。。。

>
> 念のため確認ですが、
>
> mysql> SELECT * FROM tbl WHERE col="ビタミン";
> でマッチせず、
>
> mysql> SELECT * FROM tbl WHERE col="コタミン";
> でマッチする、
> ・・・という現象が起きているのですよね?

そうなんです・・・。お客様にビタミンを引くときは「『コタミン』で
引いてねって」てとても言えません・・・。


>#latin1 設定だと 0x52 と 0x72 が「同一視」されるだけなので、
>#WHERE col="ビタミン" でビタミンがマッチしないという現象には
>#ならないですよね。col="コタミン"の場合にもマッチするというだけ
で。
>#なんか別の角度から考えてみた方がいいかもしれません、、

取り敢えず、[mysql 14797]のAテーブルからBテーブルを生成する文を下
記にしめします。

create trigger trg_catalog
after insert on Aテーブル
for each row
begin
declare binDATA blob;
set binDATA = null;
set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.AA_num));
#modify:start
# set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.BB_sb));
set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.BB_sb_mei));
#modify:end
set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.CC_keitai));
#add:start
set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.DD_year));
#add:end
set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.EE_mei));
(以下同様な分が183行つづく)
set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.biko3));
#delete:start
# set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.FF_flg));
# set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.GG_num));
# set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.HH_num));
# set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.II_url));
#delete:end
set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.biko4));
set binDATA = concat_ws("" , binDATA, ' ', upper
(NEW.biko5));

insert into tp_catalog
values (
NEW.kanri_num,
binDATA,
null
);
END;
//

delimiter ;
commit;

exit


2009年4月17日 20:52:30 (^o^)浅山雄三

投稿者 xml-rpc : 2009年4月17日 20:55
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/84418
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。