- - PR -
MySQLのVERCHAR型で半角数字を昇順にできません
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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型は数値のソートには向いていないのでしょうか? それとも何か型の設定などをしなければいけないのでしょうか? お忙しいとこまことに申し訳ありませんが、 ご存知の方アドバイスいただけますでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2007-03-20 14:14
varchar型は文字型であり、数値型ではありません。
そのため、「100」の「1」と「30」の「3」と比較しますので、 そのままの結果がでていますよね。 varchar型のまま私用したいのであれば、 「30」は「030」に変換する必要がありますね。 #3桁でよいのかは分かりませんが。 | ||||
|
投稿日時: 2007-03-20 14:34
向いていません。phpのnatsort()のような動作を期待するのは無理です。 | ||||
|
投稿日時: 2007-03-20 15:46
KOX様、shimix様
アドバイスまことにありがとうございます。 初歩的な質問だったようで、 申し訳ありません。 INT型を使う方向で考えたいと思います。 非常に助かりました。 ありがとうございました。 |
1