mysql進階 八 怎麼對varchar型別排序問題
MySQL中怎麼對varchar型別排序問題
asc 升級
desc降序
在mysql預設order by 只對數字與日期型別可以排序,但對於varchar字元型型別排序好像沒有用了,下面我來給各位同學介紹varchar型別排序問題如何解決。
今天在對國家電話號碼錶進行排序的時候發現了一個有趣的問題,我想讓isdcode欄位按照由小到大的順序排序,於是乎我是這樣寫的
SELECT * FROM gb_country_isdcode ORDER BY isdcode asc
結果如下,發現竟然不是我想要的結果,asc
isdcode是varcher型別的,如果排序的直接用asc顯然是不行的,必須將他轉換成int型別然後就可以正常排序了,只要isdcode + 0就可以了
於是乎這樣寫
SELECT * FROM gb_country_isdcode ORDER BY (isdcode+0) asc
好像是想要的那種資料比較大小的了呀。。可是為什麼+0就好了呢?原來,+0後就轉換INT型別排序了。這樣就可以按照大小排序了。
如果不是電話而是漢字怎麼辦,漢字排序我們只要進行簡單轉換即可排序了。
在mysql中使用order by對儲存了中文資訊的欄位,默認出來的結果並不是按漢字拼音的順序來排序,要想按漢字的拼音來排序,需要把資料庫的字符集設定為UTF8,然後在order by 時候強制把該欄位資訊轉換成GBK,這樣出來的結果就是按拼音順序排序的。例如:
SELECT * FROM table_name ORDER BY CONVERT(column_name USING gbk);
在mysql中試了一下,結果很令人滿意。
結論是:查詢的時候,通過convert
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://www.cnblogs.com/captainbed