在數(shù)據(jù)庫(kù)表中有一個(gè)對(duì)varchar類型的數(shù)值進(jìn)行desc排序,很簡(jiǎn)單的要求吧。可是奇怪的現(xiàn)象出現(xiàn)了表中的數(shù)據(jù)不會(huì)根據(jù)從高到底進(jìn)行排序了瞬間有點(diǎn)淚奔的感覺(jué)呀還好經(jīng)過(guò)高手指點(diǎn)啊。所以想和大家分享一下希望下一個(gè)mysql初學(xué)者以后不要像我一樣了啊還是廢話少說(shuō),看代碼吧
如:有一張T_TESTDEMO表,其有兩個(gè)DEMOID,DEMONAME字段,其中DEMOID是int類型,DEMONAME是VARCHAR類型但是存放的是認(rèn)為是數(shù)值類型的數(shù)據(jù),里面的數(shù)據(jù)如下:
1,"222222"
2,"33333333"
3,"111111"
4,"2222"
5,"99999"
6,"8888"
7,"11111"
8,"777"
現(xiàn)在有個(gè)要求是根據(jù)DEMONAME里面的數(shù)據(jù)從大到小排序,一看很簡(jiǎn)單的嘛,于是很得意的寫下以下SQL:
托福答案
SELECT * FROM T_TESTDEMO ORDER BY DEMONAME DESC
可是排序的結(jié)果是:
5,"99999"
6,"8888"
8,"777"
2,"33333333"
1,"222222"
4,"2222"
3,"111111"
7,"11111"
完全不是想要的那種根據(jù)大小排序的,瞬間有點(diǎn)石化啊。所以下面重點(diǎn)來(lái)了:
假如使用下面的sql,會(huì)是怎樣呢?
SELECT * FROM T_TESTDEMO ORDER BY (DEMONAME + 0) DESC ;
排序結(jié)果為:
2,"33333333"
1,"222222"
3,"111111"
5,"99999"
7,"11111"
6,"8888"
4,"2222"
8,"777"
呀。好像是想要的那種數(shù)據(jù)比較大小的了呀可是為什么+0就好了呢?
原來(lái),+0后就轉(zhuǎn)換INT類型排序了。這樣就可以按照大小排序了
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
