Mysql按數字大小排序String欄位

2021-08-26 06:54:04 字數 498 閱讀 3878

今天做專案的時候,遇到個小小的問題,在資料庫中查詢的時候,要用string型別的數字進行一下排序!結果是按照字串排序來處理的,沒有達到預想中的效果!於是先是想到將字元轉成數字型的,在網上搜了一下,基本上都是這樣做的,只不過很多人實現的方式稍有不同而已!有的是在 order by 的時候在字段前加個減號,或者是將排序的字段加上數字 『1』,其做法的基本思路都是將字段轉成 int 型再來比較!(注:id欄位為 varchar 型別)

如:

select * from  student where 1 = 1 order by -id desc

或者:

select * from  student where 1 = 1 order by (id + 1)

這樣都是按照 id 的公升序排列;

同時也考慮到 id 在資料庫中存在有字串的列,那樣也不會報錯,那樣會將字串處理成 '0';

這個方法很不錯,值得學習了!

Mysql按數字大小排序String欄位

標題有點難以理解,事實是我不知道怎樣用一句話來描述此種情形。問題是這樣的,當我們按由大到小的順序排序一組數字的時候,它應該如此 9800 8000 900 但如果是這些數字是以string型別儲存的話,直接排序的結果會是這樣 9800 9008000 當然多數情況下我們會把數字儲存為數字型,就可避免...

Mysql按數字大小排序String欄位

問題是這樣的,當我們按由大到小的順序排序一組數字的時候,它應該如此 9800 8000 900 但如果是這些數字是以string型別儲存的話,直接排序的結果會是這樣 9800 9008000 當然多數情況下我們會把數字儲存為數字型,就可避免這一問題。但還是有一些情形,數字被儲存為string。比如w...

Mysql按數字大小排序String欄位

問題是這樣的,當我們按由大到小的順序排序一組數字的時候,它應該如此 9800 8000 900但如果是這些數字是以string型別儲存的話,直接排序的結果會是這樣 9800 9008000 當然多數情況下我們會把數字儲存為數字型,就可避免這一問題。但還是有一些情形,數字被儲存為string。比如wo...