mysql实现将字符串字段转为数字排序或比大小
将字符串字段转为数字排序或比大小
mysql里面有个坑就是,有时按照某个字段的大小排序(或是比大小)发现排序有点错乱。后来才发现,是我们想当然地把对字符串字段当成数字并按照其大小排序(或是比大小),结果肯定不会是你想要的结果。
这时候需要把字符串转成数字再排序。
最简单的办法就是在字段后面加上+0
如把'123'转成数字123(以下例子全为亲测):
排序
例:
- 方法一:
ORDER BY '123'+0;(首推)
- 方法二:
ORDER BY CAST('123' AS SIGNED);
- 方法三:
ORDER BY CONVERT('123',SIGNED);
比大小
例:
SELECT '123'+0; -- 结果为123 SELECT '123'+0>127; -- 结果为0 SELECT '123'+0>12; -- 结果为1 SELECT CAST('123' AS SIGNED); -- 结果为123 SELECT CONVERT('123',SIGNED)>127; -- 结果为0 SELECT CONVERT('123',SIGNED)>12; -- 结果为1 SELECT CAST('123' AS SIGNED); -- 结果为123 SELECT CAST('123' AS SIGNED)>127; -- 结果为0 SELECT CAST('123' AS SIGNED)>12; -- 结果为1
综合例子:
SELECT '123'+0>12 ORDER BY CONVERT('123',SIGNED); -- 结果为1
sql语句字符串如何比较大小
需求如下,字段A是varchar类型,现在要将字段A与一个数字比较。上网搜索了一下,99%给出的方法都是cast(字段A as int),或者convent(int,字段A)。
不知道为啥,这两种方法我都试了,语法都不通过,更不用说运行了。
解决方法
写法如下:
select * from XX where 字段A+0 < 数字 + 0
是的,你没看错,就是“+0”这样一个简单的操作。
运行结果贴出来,自己看吧
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决MySQL8.0报错Client does not support auth
本文主要介绍了解决MySQL8.0报错Client does not support authentication protocol requested by server...问题,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-05-05MySQL Prepared Statement 预处理的操作方法
预处理语句是一种在数据库管理系统中使用的编程概念,用于执行对数据库进行操作的 SQL 语句,这篇文章主要介绍了MySQL Prepared Statement 预处理 ,需要的朋友可以参考下2024-08-08MySQL安装服务时提示:Install/Remove of the Service Denied解决
今天给新电脑安装了mysql,本来好好的,却报了个bug,就记录下吧,这篇文章主要给大家介绍了关于MySQL安装服务时提示:Install/Remove of the Service Denied的解决办法,需要的朋友可以参考下2023-03-03
最新评论