mysql数据库text字段排序实现语句

mysql中,默认对text字段进行排序的话是按text字段的首字符进行排序,即假如某表结构如下:

如果默认对此text类型的字段进行排序的话,如select * from table order by f1 asc。 结果可能如下图这样:

发现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


效果如下:

如此,就达到了我们的目标。

时间: 2024-09-21 03:26:08

mysql数据库text字段排序实现语句的相关文章

JDBC对MySQL数据库布尔字段的操作方法_java

本文实例讲述了JDBC对MySQL数据库布尔字段的操作方法.分享给大家供大家参考.具体分析如下: 在Mysql数据库如果要使用布尔字段,而应该设置为BIT(1)类型 此类型在Mysql中不能通过MySQLQueryBrowser下方的Edit与Apply Changed去编辑 只能通过语句修改,比如update A set enabled=true where id=1 把A表的id为1的这一行为BIT(1)类型的enabled字段设置为真 在JAVA中,使用JDBC操作这个字段的代码如下: c

mysql数据库,自定义排序查询

问题描述 mysql数据库,自定义排序查询 select * from table 从table表中查询所有数据,按照 属性isable ==可用的排在前面, isable==不可用排在后面,该怎么实现? 解决方案 SELECT * FROM table WHERE isable = 1 ORDER BY isable ASC 或 SELECT * FROM table WHERE isable = 1 ORDER BY isable DESC 或 SELECT * FROM table WHE

替换MSSQL数据库text字段恶意脚本

删除MSSQL数据库text字段的替换处理示例--全表替换,看到有人提问,所以整理了一个好久以前的处理方法,以供大家参考 方法很简单:text字段不能使用Replace,所以使用patindex -select * from Product where P_Intro like '%<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></

mysql数据库中字段都是被加密了怎么查看

问题描述 mysql数据库中字段都是被加密了怎么查看 唉 新手实习生.. 有个项目数据库中的很多字段都是是sfsaf-dfasfdadfasf-fasdfas类似这种,不知道该怎么查询数据内容? 解决方案 这你要问你boss,是用什么加密的

MySQL 数据库性能优化之SQL语句及查询优化

优化目标 减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段. 降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了.order by, group by,distinct - 都是消耗 CPU 的大户(这些操作基本上都是 CPU 处理内存中的数据比较运算).当我们的 IO 优化做到一定

mysql 按中文字段排序_Mysql

如果这个问题不解决,那么MySQL将无法实际处理中文. 出现这个问题的原因是因为MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象. 解决方法: 对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary". 如果你使用源码编译MySQL,可以编译MySQ

如何找出MySQL数据库中的低效SQL语句

面对业务的迅猛发展,DBA的一项重要工作就是及时发现数据库中的低效SQL语句,有的可以立刻着手解决(比如缺少合适的索引),有的需要尽快反馈给开发人员进行修改. MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句: 1,slow_query_log 这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句. 2,long_query_time 当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短. 3,slow_query_log_file 记录日志的文件名

MySQL 数据库 表 字段编码

1.MySQL 数据库 编码的基本使用命令 (1),查看数据库支持的所以字符 show character set;或show char set; (2),查看数据库当前状态 status;或 \s; (3).查看系统字符集设置,包括所有的字符集设置 show variables like 'character_set%'; (4).查看数据表中字符集设置 show full columns from tablename; (这个很好,在ios使用utf8mb4编码保存表情的时候,可以很清楚的看

除MSSQL数据库text字段中恶意脚本的删方法_MsSql

方法很简单:text字段不能使用Replace,所以使用patindex 复制代码 代码如下: -select * from Product where P_Intro like '%<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>%' --text字段的替换处理示例--全表替换 -- select datal