電子書籍の厳選無料作品が豊富!

$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

どのように構文を書けば宜しいのでしょうか??

いろいろ調べてみたのですが、それらしい内容のものが

見つからずに途方に暮れています。

どなたか御教授頂ければ幸いです。

宜しくお願い致します。

A 回答 (3件)

じゃ、こんな感じ?



SELECT * FROM hoge ORDER BY IF(NUMBER BETWEEN 1 AND 9 ,LPAD(NUMBER, 2, 0),NUMBER)
    • good
    • 0
この回答へのお礼

yambejp様

まさに期待通りの結果になりました!!

ありがとうございます★☆

お礼日時:2009/08/07 15:41

「NUMBER」はVARCHAR型ですか?



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

この回答への補足

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 ~

と表示されてしまいました(涙

補足日時:2009/08/07 14:38
    • good
    • 0

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

この回答への補足

o123459876様

ご教授ありがとうございます。

しかしながら、並び替え結果が

a
1
2
3
4
5
6
7
8
9
10
11
12
13

となってしまいました(汗

再度、ご教授頂けたら幸いです。

宜しくお願い致します。

補足日時:2009/08/07 14:20
    • good
    • 0

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