鍍金池/ 問答/Java  C#  數(shù)據(jù)庫  HTML/ sql語句order by desc獲取數(shù)據(jù)排序不準(zhǔn)確?

sql語句order by desc獲取數(shù)據(jù)排序不準(zhǔn)確?

圖片描述

為什么結(jié)果不一樣的?
正常來說70.00應(yīng)該是最小啊?應(yīng)該排在最后???我的price字段是varchat類型

回答
編輯回答
寫榮

varchar類型排序和字符串排序一樣,先從第一位的開始比較,8,7,6,5,4,3,2,1,0這種數(shù)據(jù),如果第一位相同比較第二位......可以考慮排序的時(shí)候轉(zhuǎn)換一下,或者表數(shù)據(jù)設(shè)計(jì)成decimal類型

2017年12月26日 16:39
編輯回答
真難過

varchar類型的排序規(guī)則就是按從左向右比較排,你可以重新定義數(shù)據(jù)類型
可以用convert強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型,如果想達(dá)到理想排序效果可以order by CONVERT(price,SIGNED) desc
希望對(duì)您有幫助

2017年5月2日 07:28
編輯回答
神曲

varchar肯定不能這樣直接排序啊,需要轉(zhuǎn)換成int類型。
可以試試order by (price+0) desc

2017年7月30日 14:00
編輯回答
背叛者

vchar類型和字符串類型一樣,從第一位開始比,若比出大小,則就是最終結(jié)果,若比較不出,依次向下比較,直至比出結(jié)果。若比較數(shù)字大小,應(yīng)定義成int類型

2018年3月27日 01:56
編輯回答
綰青絲

哥子 按照varchar的排序方法 這個(gè)就是對(duì)的啊 ,開頭 8-7-7-4-3

2018年3月28日 10:21
編輯回答
深記你

如果按照字符串來排序,這個(gè)結(jié)果是正確的,如果想按照數(shù)值排序,有以下幾種方法:
1.order by price+0 desc
2.order by CAST(price as SIGNED) desc
3.order by CONVERT(price,SIGNED) desc

2017年7月19日 09:54
編輯回答
乞許

應(yīng)該是數(shù)據(jù)類型不對(duì),造成無法排序,目測應(yīng)該是字符類型

2017年4月25日 16:17
編輯回答
凝雅

按分為單位存價(jià)格,db中表字段設(shè)計(jì)為 int 或者 bigint 更合適吧

2017年9月9日 08:29
編輯回答
久愛她

查詢準(zhǔn)確,varchar類型的排序規(guī)則就是按從左向右比較排,重新定義數(shù)據(jù)類型

2018年8月13日 10:56
編輯回答
柚稚

看著有點(diǎn)像按字符串的第一個(gè)字符降序排的,數(shù)據(jù)類型改成浮點(diǎn)類型應(yīng)該就正常了

2017年8月18日 16:59