初めての投稿です
よろしくお願いします

MySQLにてひらがなが入っているカラムでorder byしても予想に反します。文字コードが原因だとは思うのですが、MySQLの設定方法がよく分かっていません。ご指導、よろしくお願いします。
---
MySQLサーバーはLinux
Windowsからターミナルにてテーブル作成、データ入力およびselectを実行

mysql> show columns from HOGE;
+-----------+-------------+------+-----+
| Field | Type | Null | Key |
+-----------+-------------+------+-----+
| id_c | int(11) | | PRI |
| hoge_name | varchar(20) | YES | |
+-----------+-------------+------+-----+
2 rows in set (0.00 sec)


mysql> select * from HOGE;
+------+------------------+
| id_c | hoge_name |
+------+------------------+
| 1 | あいうえお |
| 2 | かきくけこ |
| 7 | まみむめも |
+------+------------------+
11 rows in set (0.00 sec)

mysql> select * from HOGE order by hoge_name;
+------+------------------+
| id_c | hoge_name |
+------+------------------+
| 7 | まみむめも |
| 1 | あいうえお |
| 2 | かきくけこ |
+------+------------------+
11 rows in set (0.00 sec)

このQ&Aに関連する最新のQ&A

A 回答 (3件)

私も試してみたのですが上手くいっちゃいました…



数字→英語→カタカナ→漢字の順番で並んじゃいました、
もちろん「あいうえお」「かきくけこ」「さしすせそ」の順番もちゃんとできました。
自分も文字コードのせいで並ばないと思ったのですが…どうしましょう?

ちなみに
mysql> select * from HOGE order by hoge_name;
で昇順・降順の指定なしでできました。

とりあえずMySQLのバージョンは4.0.16です、もしかして日本語対応したのかな?
一応ご参考までに(汗
    • good
    • 0
この回答へのお礼

早々の回答、ありがとうございます。
私はLinux初心者でして、
TurboLinuxServer8をまるごとインストールしました
MySQLも付いていたので、そのまま
#service mysqld startとしただけです
versionは3.23.52です
その他、設定をいじってはいません

xeno-fieldさんのおっしゃる「日本語対応」とは何でしょうか?対応しているかどうか確認するにはどうすればよいでしょうか?

質問ばかりでもうしわけございませんが、
よろしくお願いします

お礼日時:2005/04/19 11:01

> select * from HOGE where hoge_name = 'は';


> とすると,抽出されるのは
> id_c=6 hoge_name='は'
> id_c=10 hoge_name='わ'
> の2件がが抽出されます・・・

そのことをはじめに書いてくださいね。
(単に「予想に反します」だけでは回答者は困ります)

で、本題に戻りますが以上のようになるということはサーバー側のcharsetが正しくセットされていないのかと思われます。
my.cnf(MySQLの設定ファイル)で確認してください。
なお、3.23.15以降は起動時に指定することもできます。
例 --default-character-set=sjis

また、特に理由がないのであれば3.x系列ではなく4.0系列または4.1系列を使われることをお勧めします。
    • good
    • 0
この回答へのお礼

返事が遅くなり申し訳ございませんでした
MySQLを4.0系列に変えて
character-setをsjisに変更しました
無事、問題が解決されました

ありがとうございました

お礼日時:2005/05/10 16:00

> select * from HOGE order by hoge_name;



ORDER BY ・・・の後にASC、DESCで昇順、降順を指定していないからでは?
    • good
    • 0
この回答へのお礼

早々の回答ありがとうございます
oorder byの後ろに指定しても同じ結果でした。

ちなみに
id_c=1 hoge_name='あ'
id_c=2 hoge_name='か'
   ・
   ・
   ・
id_c=10 hoge_name='わ'
のデータを作成して、

select * from HOGE where hoge_name = 'は';
とすると,抽出されるのは
id_c=6 hoge_name='は'
id_c=10 hoge_name='わ'
の2件がが抽出されます・・・

なので、ORDER BY句が原因ではありません

お礼日時:2005/04/19 11:18

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報