当前位置:博客首页>>PHP >> 阅读正文

mysql对text字段进行排序

作者: 郑晓 分类: PHP 发布于: 2014-04-20 21:54 浏览(3,790) 没有评论


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
如此,就达到了我们的目标。

       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/mysql-cast-text-pai-xu.html