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

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