2016-06-14 2 views
1

mysqlテーブルのフィールドplayer_number 3文字を受け入れる - 数字のみ、アルファベットのみ、または両方を組み合わせて最大3文字を受け入れることができます。数字と文字を組み合わせたcharデータ型でMysqlを並べ替える

A 
    AA 
    TR 
    1 
    2 
    11 
    222 
: 表は次のように

TR 
11 
1 
2 
222 
A 
AA 

は、

優先順位

1 
2 
11 
222 
A 
AA 
TR 

代替ソートを表示するための任意の簡単な方法があります "player_number" 結果、次のようにのようなエントリを持っています

+0

「注文者」の何が問題なのですか? –

答えて

2

最初の優先権を取得するためにオーダー:(ナンバーまず文字)

SELECT 
* 
FROM YOUR_TABLE 
ORDER BY 
CASE WHEN player_number REGEXP '[0-9]+' THEN CAST(player_number AS UNSIGNED) END , player_number 

別の好ましい順序を得るために:(レターまず数)

SELECT 
* 
FROM YOUR_TABLE 
ORDER BY CAST(player_number AS UNSIGNED),player_number 
1

次のことを試してみてください;)

select player_number 
from table1 
order by if(player_number != '0' and (player_number + 1) = 1, 0, (player_number + 1)), player_number 

SQLFiddle DEMO HERE

関連する問題