-2
040, 044P, 041BL, 041W, 041PB

^^ これは、Order By 句を使用して出てくる順序です。

代わりに、これがどのように表示されるかだと思います:

040, 041BL, 041PB, 041W, 044P

以前にも同様の質問があったはずですが、まだ何もわかりません!

編集: XLANt のコメントの後、自分の間違いに気付きました。したがって、上記のテスト ケースでは単純な order by 句が機能します。ただし、GolezTrol が言及したように、桁数が常に 3 になるとは限らない場合、ケースは依然として複雑です。その場合、どうすればよいでしょうか?

4

2 に答える 2

1

試す:

SELECT string,
       @num := CONVERT(string, signed)                            AS num_part,
       Substring(Trim(LEADING '0' FROM string), Length(@num) + 1) AS rest_of_string
FROM   table1
ORDER  BY num_part,
          rest_of_string  

このように、数値は引き続き数値順に並べられます (先頭の 0 は考慮されません)。

フィドルを参照してください。

于 2013-07-16T08:44:49.153 に答える
-1

関数を試してくださいLPAD()- ただし、LPAD桁を切り捨てることを覚えておいてください。

http://sqlfiddle.com/#!2/d7281/3/0

于 2013-07-16T08:52:54.723 に答える