mysql实现将字符串字段转为数字排序或比大小


Posted in MySQL onJune 14, 2022

将字符串字段转为数字排序或比大小

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”这样一个简单的操作。

mysql实现将字符串字段转为数字排序或比大小

运行结果贴出来,自己看吧

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

MySQL 相关文章推荐
MySQL索引篇之千万级数据实战测试
Apr 05 MySQL
MySQL 分组查询的优化方法
May 12 MySQL
MySQL查看表和清空表的常用命令总结
May 26 MySQL
如何自己动手写SQL执行引擎
Jun 02 MySQL
MySQL GRANT用户授权的实现
Jun 18 MySQL
MySQL系列之十 MySQL事务隔离实现并发控制
Jul 02 MySQL
mysql脏页是什么
Jul 26 MySQL
MySQL 用 limit 为什么会影响性能
Sep 15 MySQL
分享几个简单MySQL优化小妙招
Mar 31 MySQL
MySQL Server层四个日志的实现
Mar 31 MySQL
MySQL 数据 data 基本操作
May 04 MySQL
mysql sql常用语句大全
Jun 21 MySQL
手把手带你彻底卸载MySQL数据库
MYSQL中文乱码问题的解决方案
Jun 14 #MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 #MySQL
MySql如何将查询的出来的字段进行转换
Jun 14 #MySQL
MySQL安装失败的原因及解决步骤
MySQL范围查询优化的场景实例详解
Jun 10 #MySQL
MySQL数据库如何查看表占用空间大小
Jun 10 #MySQL
You might like
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
IE中createElement需要注意的一个问题
2010/07/13 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
python执行系统命令后获取返回值的几种方式集合
2018/05/12 Python
简单了解python的一些位运算技巧
2019/07/13 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
Python with语句用法原理详解
2020/07/03 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
中国网上药店领导者:1药网
2017/02/16 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
企业为何需要商业计划书
2013/12/26 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
党校培训学习心得体会
2016/01/06 职场文书
MySQL创建管理子分区
2022/04/13 MySQL