[前][次][番号順一覧][スレッド一覧]

mysql:14809

From: Satoshi Tatsuoka <Satoshi Tatsuoka <satoshi@xxxxxxxxxx>>
Date: Fri, 17 Apr 2009 21:23:09 +0900
Subject: [mysql 14809] Re: SJISで文字コードがシフト?してしまい検索できない

立岡です。

坂井さん。こちらでも試してみました。この現象、確かに起きますね。
2バイト目がUPPERされました。とりあえずご報告まで。

(2009年04月17日 21:00), SAKAI Kei wrote:
> 坂井です。
> 
>   ああっ!浅山さん、upper() していたのですね。
>   これがたぶんみんなが一番知りたかった情報です。
>   
>   私のほうでも試してみたところ、どうも charset の設定にかかわらず
>   upper されてしまうような挙動に見えます。不具合な予感。
>   以下皆さんにも判断していただきたく、やったことを書きます。
>   
> --テーブルを作成し、データを3件INSERT。
> mysql> create table t (a varchar(16)) engine=myisam default charset=cp932;
> mysql> insert into t values ("ビタ");
> mysql> insert into t values ("ABC");
> mysql> insert into t values ("abc");
> 
> --UPPER() の挙動を確認(参考)
> mysql> select * from t WHERE upper(a)="ABC";
> +------+
> | a    |
> +------+
> | ABC  | 
> | abc  | 
> +------+
> 2 rows in set (0.00 sec)
> 
> --問題の日本語文字でUPPER()の挙動を確認
> mysql> select * from t WHERE upper(a)="ビタ";
> Empty set (0.01 sec)
> 
> mysql> select * from t WHERE upper(a)="コタ";
> +------+
> | a    |
> +------+
> | ビタ | 
> +------+
> 1 row in set (0.00 sec)
> 
> 
> ===============
> --UPPER()関数によって CP932の2バイト目がUPPERされてしまっていることの確認(不具合と思います)
> 
> mysql> SELECT a, HEX(a), HEX(UPPER(a)) FROM t;
> +------+----------+---------------+
> | a    | HEX(a)   | HEX(UPPER(a)) |
> +------+----------+---------------+
> | ビタ | 8372835E | 8352835E      | 
> | ABC  | 414243   | 414243        | 
> | abc  | 616263   | 414243        | 
> +------+----------+---------------+
> 3 rows in set (0.00 sec)
> 
> 
> ===============
> --環境とか
> mysql> SHOW CREATE TABLE t\G
> *************************** 1. row ***************************
>        Table: t
> Create Table: CREATE TABLE `t` (
>   `a` varchar(16) default NULL
> ) ENGINE=MyISAM DEFAULT CHARSET=cp932
> 1 row in set (0.00 sec)
> 
> mysql> status
> --------------
> :
> Server version:         5.0.45 Source distribution
> :
> Server characterset:    cp932
> Db     characterset:    cp932
> Client characterset:    cp932
> Conn.  characterset:    cp932
> --------------
> 
> mysql> show create database test;
> +----------+----------------------------------------------------------------+
> | Database | Create Database                                                |
> +----------+----------------------------------------------------------------+
> | test     | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET cp932 */ | 
> +----------+----------------------------------------------------------------+
> 1 row in set (0.00 sec)
> 
> Thank you 
> 
> On Fri, 17 Apr 2009 20:38:31 +0900
> ALCYONE@xxxxxxxxxx (浅山雄三) wrote:
>> 奥野様
>>
>>   浅山です。いつもお世話になります。
>>
>>
>>  >その現象はテーブルの文字コードが違うときの現象に似てるんですが、
>>  >もう一度テーブルの文字コードを確認して頂けませんか?
>>  >
>>  >mysql> SHOW CREATE TABLE テーブル名\G
>>
>> | Aテーブル | CREATE TABLE `Aテーブル` (
>>   `AA_num` varchar(16) NOT NULL,
>>   `BB_num` varchar(16) DEFAULT NULL,
>>   `CC_num` varchar(16) DEFAULT NULL,
>>   `DD_sb` text,
>>   `EE_mei` text,
>> (以下、同様の行が205行)
>>   `biko3` text,
>>   `update_dattim` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON 
>> UPDATE CURRENT_TIMESTAMP,
>>   `FF_flg` varchar(1) DEFAULT NULL,
>>   `GG_num` varchar(16) DEFAULT NULL,
>>   `HH_num` varchar(16) DEFAULT NULL,
>>   `II_url` varchar(500) DEFAULT NULL,
>>   `biko4` text,
>>   `biko5` text,
>>   PRIMARY KEY (`AA_num`),
>>   UNIQUE KEY `Aテーブル_uk1` (`JJ_num`),
>>   KEY `Aテーブル_KK_num_idx1` (`LL_num`),
>>   KEY `MM_flg_idx` (`LL_flg`)
>> ) ENGINE=MyISAM DEFAULT CHARSET=cp932 | 
>>
>>
>> | Bテーブル | CREATE TABLE `Bテーブル` (
>>   `AA_num` varchar(16) NOT NULL DEFAULT '',
>>   `data` longtext,
>>   `ngram` longtext,
>>   PRIMARY KEY (`AA_num`),
>>   FULLTEXT KEY `ngram` (`ngram`)
>> ) ENGINE=MyISAM DEFAULT CHARSET=cp932 |
>>
>>
>>  >あと、問題になってるSELECT文も見せて頂けますでしょうか?
>>
>> select SQL_SMALL_RESULT AA_NUM, BB_NUM, CC_KJ, DD_EN, EE_EN, 
>> FF_KJ1,length(trim(BB_NUM)) BB_NUM_LEN from Aテーブル DT, Bテーブル 
>> TP where ((upper(DD_EN) like '%ビタミン%' or upper(GG_EN) like '%ビ
>> タミン%' or upper(CC_KJ) like '%ビタミン%') and (upper(DD_EN) like 
>> '%サプリメント%' or upper(GG_EN) like '%サプリメント%' or upper
>> (CC_KJ) like '%サプリメント%')) and (upper(substr(HH_CD1,1,1)) = 
>> 'B' or upper(substr(II_CD2,1,1)) = 'B' or upper(substr(JJ_CD3,1,1)) 
>> = 'B') and AA_NUM = TP.KANRI_NUM and (MATCH(NGRAM) AGAINST('+栄養
>> *' IN BOOLEAN MODE)) order by CC_KJ
>>
>>
>> ※ Aテーブルは[mysql 14797]のAテーブル
>>    Bテーブルは[mysql 14797]のBテーブル
>>    フィールド名の一部を実際とはかえています。
>>
>>
>>  2009年4月17日 20:38:27 (^o^)浅山雄三
> 
> 
> 

[前][次][番号順一覧][スレッド一覧]

     14789 2009-04-15 19:14 [<ALCYONE@xxxxxxxxxx>] SJISで文字コードがシフト?してしまい検索できない
     14790 2009-04-15 19:28 ┣[Isamu Moriyama <mori]                                       
     14791 2009-04-15 19:43 ┃┗[<ALCYONE@xxxxxxxxxx>]                                     
     14792 2009-04-15 20:17 ┣[SAKAI Kei <sak2@xxxx]                                       
     14795 2009-04-16 15:06 ┃┣[<ALCYONE@xxxxxxxxxx>]                                     
     14796 2009-04-16 15:13 ┃┃┣[<ALCYONE@xxxxxxxxxx>]                                   
   @ 14800 2009-04-16 17:28 ┃┃┃┗[chuuken kenkou <ken_]                                 
     14803 2009-04-17 19:51 ┃┃┃ ┗[<ALCYONE@xxxxxxxxxx>]                               
     14805 2009-04-17 20:50 ┃┃┃  ┗[Satoshi Tatsuoka <sa]                             
     14802 2009-04-17 17:05 ┃┃┗[SAKAI Kei <sak2@xxxx]                                   
     14806 2009-04-17 20:55 ┃┃ ┗[<ALCYONE@xxxxxxxxxx>]                                 
     14801 2009-04-17 15:52 ┃┗[Mikiya Okuno <Mikiya]                                     
     14804 2009-04-17 20:38 ┃ ┗[<ALCYONE@xxxxxxxxxx>]                                   
     14807 2009-04-17 21:00 ┃  ┗[SAKAI Kei <sak2@xxxx]                                 
     14808 2009-04-17 21:12 ┃   ┣[SAKAI Kei <sak2@xxxx]                               
     14810 2009-04-18 13:37 ┃   ┃┗[Satoshi Tatsuoka <sa]                             
     14811 2009-04-18 15:38 ┃   ┃ ┣[Yoshinori Matsunobu ]                           
     14813 2009-04-18 17:03 ┃   ┃ ┃┗[Satoshi Tatsuoka <sa]                         
     14814 2009-04-18 17:17 ┃   ┃ ┃ ┗[Yoshinori Matsunobu ]                       
     14815 2009-04-20 10:03 ┃   ┃ ┃  ┗[<ALCYONE@xxxxxxxxxx>]                     
     14821 2009-05-06 14:05 ┃   ┃ ┃   ┗[SAKAI Kei <sak2@xxxx]                   
     14840 2009-05-09 12:01 ┃   ┃ ┃    ┣[SAKAI Kei <sakaik@xx]                 
     14956 2009-07-06 16:57 ┃   ┃ ┃    ┗[SAKAI Kei <sak2@xxxx] MySQL 5.1.36 リリース(was Re:  Re: SJISで文字コードがシフト?してしまい検索できない
     14812 2009-04-18 16:10 ┃   ┃ ┗[SAKAI Kei <sak2@xxxx]                           
->   14809 2009-04-17 21:23 ┃   ┗[Satoshi Tatsuoka <sa]                               
     14794 2009-04-15 23:37 ┗[とみたまさひろ <tomm]                                       
     14797 2009-04-16 15:34  ┗[<ALCYONE@xxxxxxxxxx>]                                     
     14798 2009-04-16 15:41   ┗["Y. Tsutsui" <tutui@]                                   
     14799 2009-04-16 16:44    ┗[<ALCYONE@xxxxxxxxxx>]