2017-05-28 4 views
0

は、私はそれがソートこのMySQLの自然は、varchar型のフィールドでソート

subject_code 
Eng 311 
DE 312 
DE 313 
COMP 314  
DE 315 

ようにすることができ、この

subject_code  
DE 312 
DE 313 
DE 315 
Eng 311 
COMP 314 

のような値を持っているだけ その数で数値フィールドの文字列を並べ替えることがとにかくあり試しました

order by SOUNDEX(subject_code),LENGTH(subject_code),subject_code 

ただし、期待どおりに動作しません。

ご協力いただきありがとうございます。

答えて

0

状況に応じて、文字列操作を使用して数字の件名コードを取得し、並べ替えに使用します。

SELECT 
    subject_code 
FROM yourTable 
ORDER BY 
    CAST(SUBSTR(subject_code, 
       INSTR(subject_code, ' ') + 1) AS UNSIGNED) 

ただし、実際にはテキストと数値コードを別々の列に格納する必要があります。

出力:ここ

enter image description here

デモ:

Rextester

+0

パーフェクト..私はint型と文字列との鞍部を隔てているはずのおかげ – sanu

関連する問題