當(dāng)前位置: 博客首頁 >> PHP >> 閱讀正文

mysql對text字段進行排序

作者: 鄭曉 分類: PHP 發(fā)布于: 2014-04-20 21:54 瀏覽:7,947 沒有評論


mysql中,默認對text字段進行排序的話是按text字段的首字符進行排序,即假如某表結(jié)構(gòu)如下:
mysql_text_cast_orderby1
如果默認對此text類型的字段進行排序的話,如select * from table order by f1 asc?!〗Y(jié)果可能如下圖這樣:
mysql_text_cast_orderby2

發(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。
效果如下:
mysql_text_cast_orderby3
如此,就達到了我們的目標(biāo)。

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。

本文永久鏈接: http://yjfs.org.cn/mysql-cast-text-pai-xu.html

發(fā)表評論

change vcode