mysql实现将字符串字段转为数字排序或比大小
作者:ispotu 时间:2024-01-16 19:59:16
将字符串字段转为数字排序或比大小
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”这样一个简单的操作。
运行结果贴出来,自己看吧
来源:https://ispotu.blog.csdn.net/article/details/78007969
标签:mysql,字符串字段,数字排序,比大小
0
投稿
猜你喜欢
pytorch常见的Tensor类型详解
2022-10-25 19:34:01
python删除列表内容
2023-05-23 02:47:49
django自定义非主键自增字段类型详解(auto increment field)
2021-08-22 02:11:42
NumPy统计函数的实现方法
2021-10-15 22:02:27
SQL Server特殊磁带备份及恢复设计
2009-01-21 14:39:00
学习完全掌握纯CSS布局网页
2008-05-28 17:14:00
使用python模块plotdigitizer抠取论文图片中的数据实例详解
2023-07-14 01:50:52
基于Pytorch实现的声音分类实例代码
2021-01-04 21:42:28
详解selenium + chromedriver 被反爬的解决方法
2022-03-20 18:40:46
一个用JavaScript写的本周是本学期第几周的程序
2009-03-09 12:49:00
block 和 inline 答案揭晓~ 另付一则,关于 word-break
2009-12-08 13:06:00
聊聊python中的load、loads实现反序列化的问题
2023-07-20 04:38:52
python如何调用字典的key
2023-09-02 01:57:52
Python 编程速成(推荐)
2021-04-03 04:30:10
Bootstrap实现渐变顶部固定自适应导航栏
2023-08-23 00:52:40
用virtualenv建立多个Python独立虚拟开发环境
2023-10-28 06:24:07
Selenium 安装和简单使用的实现
2023-12-01 07:22:55
Python新建项目自动添加介绍和utf-8编码的方法
2023-02-07 07:58:06
php生成随机密码的三种方法小结
2023-11-22 04:25:50
获取 Textarea 的光标位置
2010-11-30 21:33:00