萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql數據庫text字段排序實現語句

mysql數據庫text字段排序實現語句

在mysql中text字段類型是一個超長的字段了,我們幾乎不會使用它來進行數據排序了,但今天下午碰到一個必須使用text字段排序的項目,最終還是解決了下面分享解決辦法。 mysql中,默認對text字段進行排序的話是按text字段的首字符進行排序,即假如某表結構如下:
mysql_text_cast_orderby1
如果默認對此text類型的字段進行排序的話,如select * from table order by f1 asc。 結果可能如下圖這樣:
mysql_text_cast_orderby2 發現mysql對text類型的字段排序時只對首字符進行排序,並不是我們所預期的結果(按數字大小排序)。 所以如果想要解決這個問題,我們可以使用mysql的一個內置函數:cast,CAST ( expression AS data_type )。cast是一個顯式的類型轉換函數,將第一個參數轉換成第二個參數所設置的類型,第一個參數可以是字段,或其它符合語法的表達式,第二個參數是目標類型,可以是如下幾種類型:
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
如此,就達到了我們的目標。
copyright © 萬盛學電腦網 all rights reserved