5

アルファベット順だけでなく、最後の数字でも並べ替えたい配列があります。

"SELECT DISTINCT Number FROM database WHERE 1 Order By Number ASC";

現在の並べ替え方法は次のとおりです。

Number 1
Number 10
Number 11
Number 2
Number 3
Number 4
Number 5
Number 6
Number 7
Number 8
Number 9
The End

これは私がそれをソートしたい方法です:

Number 1
Number 2
Number 3
Number 4
Number 5
Number 6
Number 7
Number 8
Number 9
Number 10
Number 11
The End
4

5 に答える 5

7

別の並べ替え条件を追加します。

Order By LENGTH(Number), Number;

これは、数値が長いほど数値が大きくなるため機能します。同じ長さの数値については、テキスト比較を行うことができます。'0' < '1' .... < '9'

于 2013-05-06T06:56:20.290 に答える
2

これを試して :-

SELECT distinct numberr FROM tablename Order By cast(substring(numberr,7) as unsigned int) ASC ;

その正常に動作します。

出力:-

Number 1
Number 2
Number 3
Number 4
Number 5
Number 6
Number 7
Number 10
Number 11
于 2013-05-06T07:19:25.810 に答える
0

sql には、ソート中に文字列を整数にキャストする関数があります。

mysqlを使用している場合、これはあなたが望むことをするために使用するものです:

SELECT DISTINCT Number FROM database Order By CAST(Number AS UNSIGNED) ASC

別のデータベースを使用している場合は、データベースの列を整数にキャストする方法をグーグルで検索する必要があります。

注: 他の解決策のいくつかは機能します... しかし、ちょっとハックです。上記はまさにあなたが望むことを行い、あなたがそれを行う「想定」方法です;)

于 2013-05-06T07:02:22.123 に答える
0
"SELECT DISTINCT Number FROM database WHERE 1 Order By substring_index(Number,'Number',1),cast(substring_index(Number,'Number ',-1) as unsigned int) ASC";
于 2013-05-06T07:31:06.277 に答える