標題有點難以理解,事實是我不知道怎樣用一句話來描述此種情形。
問題是這樣的,當我們按由大到小的順序排序一組數字的時候,它應該如此:
9800
8000
900
但如果是這些數字是以string型別儲存的話,直接排序的結果會是這樣:
9800
9008000
當然多數情況下我們會把數字儲存為數字型,就可避免這一問題。但還是有一些情形,數字被儲存為string。
比如wordpress的postmetas表,它的meta_value已經固定了就是string。當我們需要把meta_value按數字大小排序的時候,直接寫order by meta_value就不能達到我們所需要的目的。
如select meta_value from postmeta where meta_key="count" order by meta_value desc;
得到的結果:
9800
9008000
解決的方法是,在排序語句裡把meta_value轉成數字再排序,寫作-meta_value
。
如select meta_value from postmeta where meta_key="count" order by -meta_value asc;
得到的結果:
9800
8000
900
此時採用的是按meta_value的負值排序,所以如需得到由大到小的效果,需要使用asc而非desc。當然也可以直接用--meta_value desc
。
如select meta_value from postmeta where meta_key="count" order by --meta_value desc;
得到的結果一樣是:
9800
8000
900
Mysql按數字大小排序String欄位
今天做專案的時候,遇到個小小的問題,在資料庫中查詢的時候,要用string型別的數字進行一下排序!結果是按照字串排序來處理的,沒有達到預想中的效果!於是先是想到將字元轉成數字型的,在網上搜了一下,基本上都是這樣做的,只不過很多人實現的方式稍有不同而已!有的是在 order by 的時候在字段前加個減...
Mysql按數字大小排序String欄位
問題是這樣的,當我們按由大到小的順序排序一組數字的時候,它應該如此 9800 8000 900 但如果是這些數字是以string型別儲存的話,直接排序的結果會是這樣 9800 9008000 當然多數情況下我們會把數字儲存為數字型,就可避免這一問題。但還是有一些情形,數字被儲存為string。比如w...
Mysql按數字大小排序String欄位
問題是這樣的,當我們按由大到小的順序排序一組數字的時候,它應該如此 9800 8000 900但如果是這些數字是以string型別儲存的話,直接排序的結果會是這樣 9800 9008000 當然多數情況下我們會把數字儲存為數字型,就可避免這一問題。但還是有一些情形,數字被儲存為string。比如wo...