• ベストアンサー

ORDER BYで並び替えなんですが…

$result = mysql_query('SELECT * FROM hoge ORDER BY LPAD(NUMBER, 5, 0)') ; で並び替え(ソート)をすると 1 2 3 4 5 6 7 8 9 a 10 11 12 13 という結果で表示されます。 これを 1 2 3 4 5 6 7 8 9 10 11 12 13 a というように並び替えて表示させたいのですが…orz どのように構文を書けば宜しいのでしょうか?? いろいろ調べてみたのですが、それらしい内容のものが 見つからずに途方に暮れています。 どなたか御教授頂ければ幸いです。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

じゃ、こんな感じ? SELECT * FROM hoge ORDER BY IF(NUMBER BETWEEN 1 AND 9 ,LPAD(NUMBER, 2, 0),NUMBER)

nkm-a3u-ki
質問者

お礼

yambejp様 まさに期待通りの結果になりました!! ありがとうございます★☆

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

「NUMBER」はVARCHAR型ですか? 汎用的に使えるか分かりませんが、 select * from hoge ORDER BY case when NUMBER > '9' then 1 else 0 end, LPAD(NUMBER, 5, 0)

nkm-a3u-ki
質問者

補足

nora1962様 NUMBERはchar(2)になります。 nora1962様のご教授頂いたものを参考に $aaa = mysql_query('select * from hoge ORDER BY case when NUMBER > '9' then 1 else 0 end, LPAD(NUMBER, 5, 0)'); と試してみたのですが、 Parse error: parse error, unexpected T_LNUMBER ~ と表示されてしまいました(涙

すると、全ての回答が全文表示されます。
回答No.1

SELECT * FROM hoge ORDER BY CAST(NUMBER AS UNSIGNED);

nkm-a3u-ki
質問者

補足

o123459876様 ご教授ありがとうございます。 しかしながら、並び替え結果が a 1 2 3 4 5 6 7 8 9 10 11 12 13 となってしまいました(汗 再度、ご教授頂けたら幸いです。 宜しくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A