今天遇到一個(gè)問(wèn)題,就是對mysql數值字符串類(lèi)型進(jìn)行排序,在默認情況下使用order by 字段名稱(chēng) desc/asc 進(jìn)行排序的時(shí)候,mysql進(jìn)行的排序規則是按照ASCII碼進(jìn)行排序的,并不會(huì )自動(dòng)的識別出這些數據是數值,出現 9>10 的情況,百度了一下,發(fā)現對于這種情況,可以采用
1
2
3
order by 字段名稱(chēng)+0 desc/asc的形式進(jìn)行排序(親測有效)
order by 字段名稱(chēng)*1 desc/asc的形式進(jìn)行排序(親測有效)
----這樣mysql會(huì )將數值字符串類(lèi)型的數據當作數值進(jìn)行處理,但是存在效率問(wèn)題,不推薦使用varchar/char類(lèi)型來(lái)存儲數值,這樣會(huì )帶來(lái)不不必要的問(wèn)題。適用于varchar/char類(lèi)型來(lái)存儲數值型數據。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。