1

次の列、ID varchar(50) を持つテーブル 'MyTable' があります。

ID
----------
10
100
700-6 0110B512
700-6 0110B513
700-8 0110B512
700-9 0110B512

この列を出力でソートする必要があります

ID
----------
10
100
700-6 0110B512
700-8 0110B512
700-9 0110B512
700-6 0110B513

助けてください!!

私はこのように試しましたが、出力は期待どおりではありません。

SELECT * FROM MyTable
ORDER BY
Case    
When IsNumeric(ID) = 1 then LEFT(Replicate('0',101) + ID, 100) 
When IsNumeric(ID) = 0 then RIGHT(Replicate('0',101) + ID, 100) 
Else ID  
END
ASC
4

2 に答える 2

1

先頭/末尾の整数が固定されていると仮定すると、これが最も簡単だと思います。

SELECT *
FROM table1 
ORDER BY LEFT(id,3) ,RIGHT(id,3) ,ID

SQL フィドル

必要に応じていずれかの部分をキャストできますINTが、サンプルからは明らかではありません。

于 2013-08-02T11:24:57.757 に答える