- PR -

MySQLのVERCHAR型で半角数字を昇順にできません

1
投稿者投稿内容
加藤ローサ
会議室デビュー日: 2005/09/21
投稿数: 15
投稿日時: 2007-03-20 13:36
お世話になっております。

現在、

MySQL 4.0.x
phpMyAdmin 2.8.2.4

を使用しています。

VARCHAR型に半角数字を入れて、
ORDERBY句で昇順に表示したいのですが、

100
120
30

のように30が一番大きい数値として解釈されてしまいます。

この30のデータを101にすると、

100
101
120

と正常に昇順にならびます。

このカラムをINT型にすると、

30
100
120

と正しく並ぶのですが、
最終的には、このカラムのデータに全角文字も入れて、

30
100
120




というような並びにしたいので、
できればVARCHAR型で正しく昇順にしたいと思っています。

表示はphpMyAdminで行っています。

VARCHAR型は数値のソートには向いていないのでしょうか?
それとも何か型の設定などをしなければいけないのでしょうか?

お忙しいとこまことに申し訳ありませんが、
ご存知の方アドバイスいただけますでしょうか?

よろしくお願いいたします。
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2007-03-20 14:14
varchar型は文字型であり、数値型ではありません。
そのため、「100」の「1」と「30」の「3」と比較しますので、
そのままの結果がでていますよね。

varchar型のまま私用したいのであれば、
「30」は「030」に変換する必要がありますね。
#3桁でよいのかは分かりませんが。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-03-20 14:34
引用:

加藤ローサさんの書き込み (2007-03-20 13:36) より:
VARCHAR型は数値のソートには向いていないのでしょうか?


向いていません。phpのnatsort()のような動作を期待するのは無理です。
加藤ローサ
会議室デビュー日: 2005/09/21
投稿数: 15
投稿日時: 2007-03-20 15:46
KOX様、shimix様

アドバイスまことにありがとうございます。

初歩的な質問だったようで、
申し訳ありません。

INT型を使う方向で考えたいと思います。

非常に助かりました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)