私はこの出力を得ようとしています。
MDT 1
MDT 2
MDT 3
MDT 11
MDT 44
ただし、値はアルファベット順に並べられているため、123 が 2 より前になります。
例 :
MDT 1
MDT 11
MDT 156
MDT 2
MDT 3
MDT 303
MDT 44
等々。
私はこのコードを使用していますが、うまくいかなかったようです。
SELECT * FROM file ORDER BY ABS(ID) ASC
どうすればこれを解決できますか?
私はこの出力を得ようとしています。
MDT 1
MDT 2
MDT 3
MDT 11
MDT 44
ただし、値はアルファベット順に並べられているため、123 が 2 より前になります。
例 :
MDT 1
MDT 11
MDT 156
MDT 2
MDT 3
MDT 303
MDT 44
等々。
私はこのコードを使用していますが、うまくいかなかったようです。
SELECT * FROM file ORDER BY ABS(ID) ASC
どうすればこれを解決できますか?
ID に常にプレフィックス as が含まれる場合は、MDTこれを使用して、要件に従って並べ替えることができます。
SELECT * FROM File
ORDER BY CAST(replace(ID, 'MDT ', '') AS UNSIGNED) ASC
そのスニペットを試してください
SELECT * FROM file ORDER BY ID + 0 ASC
このようにしてみてください。数値に基づいてソートされます:
select substr(id,4)*1 from file order by substr(id,4)*1
それは与えます
1
2
3
11
44
...
すべてのフィールドが必要な場合は、文字列の長さに基づいて以下のクエリ ( "substr(id,4)" または "substr(id,5)" ) を試してください (例: id= proj-001911 --> SUBSTR( id, 6 を取る) ) *1) )
select * from file order by substr(id,4)*1
SELECT * FROM file
ORDER BY CONVERT(SUBSTRING(ID,5),UNSIGNED) ASC
SUBSTRING()'MDT '後にすべての文字を抽出し、CONVERT()残りの部分文字列を符号なし整数に変更しますORDER BY。
note SUBSTR()は の同義語ですSUBSTRING()。