當前位置:博客首頁>>PHP >> 閱讀正文

mysql對text字段進行排序

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


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

發(fā)現(xiàn)mysql對text類型的字段排序時只對首字符進行排序,并不是我們所預期的結果(按數(shù)字大小排序)。

所以如果想要解決這個問題,我們可以使用mysql的一個內(nèi)置函數(shù):cast,CAST ( expression AS data_type )。cast是一個顯式的類型轉換函數(shù),將第一個參數(shù)轉換成第二個參數(shù)所設置的類型,第一個參數(shù)可以是字段,或其它符合語法的表達式,第二個參數(shù)是目標類型,可以是如下幾種類型:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

所以,對于我們要排序的這個字段來說,我們需要把這個字段轉換為整型,如signed。對應的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
如此,就達到了我們的目標。

? ? ? ?

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

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

發(fā)表評論

change vcode