mysql 字串型別的數值欄位按照數值的大小進行排序

codefly發表於2018-12-19

今天遇到一個問題,就是對mysql數值字串型別進行排序,在預設情況下使用order by 欄位名稱 desc/asc 進行排序的時候,mysql進行的排序規則是按照ASCII碼進行排序的,並不會自動的識別出這些資料是數值,百度了一下,發現對於這種情況,可以採用

order by 欄位名稱+0 desc/asc的形式進行排序
order by 欄位名稱*1 desc/asc的形式進行排序

通過上述方式,mysql會將數值字串型別的資料當作數值進行處理,就是一種隱式型別轉換

注意:上述方式雖然可以解決該問題,但是存在效率問題,不推薦使用varchar/char型別來儲存數值,這樣會帶來不不必要的問題

相關文章