MySQLで数字のソート

PHP・MySQL
| | コメント(0) | トラックバック(0)
MySQLを使っていて抽出したデータを並び替えるというのはごく一般的に使われると思います。
例えば、INT型のカラム名Aというものを昇順にならび替える場合はSQL文に
「 ORDER BY A 」と追記してあげれば正常な結果が出てきます。
ただ、私の場合はVARCHAR型のカラム名Bのデータを昇順に並び替える必要が出てきたことがあります。
単純にORDER句を使えば正常な結果が出てくるのですが、そのBに入っているデータは数字であったり文字であったりしています。
例えば、「第1号」とか「第234号」とか。
この並び替えをORDER句を使って実行すると先頭からの文字でソートされてしまいます。
1「第1号」
2「第11号」
3「第111号」
4「第2号」
という感じです。
これを、番号順に並び替えるにはどうすればいいか。

答えは、桁数順→数字順とすれば正常に抽出されます。
SQL文では「SELECT * FROM table ORDER BY LENGTH(B)、B」
という感じです。
LENGTHでカラムBの文字数順に並び替えてくれます。

ただ、一点未解決の部分がありまして、「第10−1号」の場合はどうするか?
これは、PHP側でデータを取り込む際もしくは、抽出したデータを再度並び替えすることで対応しました。

【WEB開発】カテゴリ:


【WEB開発】トラックバック(0)

【WEB開発】このブログ記事を参照しているブログ一覧: MySQLで数字のソート

【WEB開発】このブログ記事に対するトラックバックURL: http://web.creator-world.net/MT/mt-tb.cgi/27



【WEB開発】コメントする



カスタム検索

ioPLAZA【アイ・オー・データ直販サイト】 ioPLAZA【アイ・オー・データ直販サイト】
あれもこれも標準装備のレンタルサーバ あれもこれも標準装備のレンタルサーバ


Web広告限定ストア(eクーポン)Web広告限定ストア(eクーポン)

問い合わせ

メールフォーム