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

mysql:7514

From: Masahiro Fukuda <Masahiro Fukuda <masahif-ml@xxxxxxxxxx>>
Date: Thu, 17 Apr 2003 00:56:15 +0900
Subject: [mysql 07514] 日本語文字列の一部で group by した場合の挙動について

こんにちは。Ynotの福田です。

日本語の文字列の一部分を切り出して、group by した場合に
正しく動作しないという状況が起きています。

具体的には、下記のような状況です。
--------------------------------------------------------
CREATE TABLE mojilist (
  moji varchar(10)
);

insert into mojilist values('あお');
insert into mojilist values('あか');

で、テーブルを作り....

mysql> select left(moji, 1) as moji1 from mojilist;
+-------+
| moji1 |
+-------+
| あ    |
| あ    |
+-------+
2 rows in set (0.00 sec)
 → 文字列の1文字目だけが正しく取り出せている

mysql> select left(moji, 1) as moji1 from mojilist group by moji1;
+-------+
| moji1 |
+-------+
| ・    |
+-------+
1 row in set (0.01 sec)
 → どうやら1バイト目だけが取り出されている?


mysql> select left(moji, 2) as moji1 from mojilist group by moji1;
+-------+
| moji1 |
+-------+
| あ    |
+-------+
1 row in set (0.00 sec)
  → どうやら2文字でなく、2バイト取り出されている?
--------------------------------------------------------

といった形で、日本語文字列の一部を取り出した結果を group by すると、
正しく、動作していないように感じるのです。

テストした環境は...
 OS: RedHat7.3
 MySQL: 3.23.56(www.mysql.comよりダウンロードしたバイナリ)

 /etc/my.cnf の中身
 -------------------------------------
 [mysql]
 default-character-set=sjis

 [mysqldump]
 default-character-set=sjis

 [mysqld]
 default-character-set=sjis
 datadir=/dbdata/mysql
 set-variable = max_connections=8192
 -------------------------------------

です。

もし、同様の問題の解決方法をご存じの方がいらっしゃいましたら、
教えていただけないでしょうか?

よろしくお願いします。


-- 
Masahiro Fukuda mailto:masahif-ml@xxxxxxxxxx


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