mysql對text字段進行排序
作者: 鄭曉 分類: PHP 發(fā)布于: 2014-04-20 21:54 瀏覽:7,947 沒有評論
mysql中,默認對text字段進行排序的話是按text字段的首字符進行排序,即假如某表結(jié)構(gòu)如下:
如果默認對此text類型的字段進行排序的話,如select * from table order by f1 asc?!〗Y(jié)果可能如下圖這樣:
發(fā)現(xiàn)mysql對text類型的字段排序時只對首字符進行排序,并不是我們所預(yù)期的結(jié)果(按數(shù)字大小排序)。
所以如果想要解決這個問題,我們可以使用mysql的一個內(nèi)置函數(shù):cast,CAST ( expression AS data_type )。cast是一個顯式的類型轉(zhuǎn)換函數(shù),將第一個參數(shù)轉(zhuǎn)換成第二個參數(shù)所設(shè)置的類型,第一個參數(shù)可以是字段,或其它符合語法的表達式,第二個參數(shù)是目標(biāo)類型,可以是如下幾種類型:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
所以,對于我們要排序的這個字段來說,我們需要把這個字段轉(zhuǎn)換為整型,如signed。對應(yīng)的mysql語句可以是這樣:select * from table order by cast(f1 as signed) asc; 或者也可以這樣:select cast(f1 as signed) as f2 order by f2 asc。
效果如下:
如此,就達到了我們的目標(biāo)。
本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。
本文永久鏈接: http://yjfs.org.cn/mysql-cast-text-pai-xu.html