mysql 字符转数字进行比较大小_mysql将字符串字段转为数字排序或比大小

mysql 字符转数字进行比较大小_mysql将字符串字段转为数字排序或比大小mysql里面有个坑就是,有时按照某个字段的大小排序(或是比大小)发现排序有点错乱。后来才发现,是我们想当然地把对字符串字段当成数字并按照其大小排序(或是比大小),结果肯定不会是你想要的结果。这时候需要把字符串转成数字再排序。最简单的办法就是在字段后面加上+0如把’123’转成数字123(以下例子全为亲测):排序:例:方法一:ORDERBY’123’+0;(首推)方法二:ORDERBYCA…

大家好,又见面了,我是你们的朋友全栈君。

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

转载至链接:https://my.oschina.net/u/2331760/blog/1842421

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139407.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java Web显示用户上次访问时间(实例一)

    Java Web显示用户上次访问时间(实例一)**利用Cookie技术实现显示用户上次访问的功能**importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.servlet.ServletException;importjavax.servlet.http.C…

    2022年7月8日
    19
  • pytorch BatchNorm参数详解,计算过程

    pytorch BatchNorm参数详解,计算过程BatchNorm1d的参数:torch.nn.BatchNorm1d(num_features,eps=1e-05,momentum=0.1,affine=True,track_running_stats=True)

    2022年5月24日
    95
  • Java语言冒泡排序详解

    Java语言冒泡排序详解基于很多同学在面试的过程中被问到一些基础的算法,导致整个面试过程不理想,而基础的算法和数据结构往往都是一些大公司任职的基本要求,这也严重影响拿offer的成功率。接下来的一段时间我将陆续对一些简单的基础的算法和数据结构进行详细说明。我将从排序算法说起,下面从冒泡排序开始说起。排序结果:数据从小到大。首先说一下冒泡排序的思想:每次比较从第一个数据开始,数据两两比较,如果左边数据比右边数据大,则交换左右

    2022年6月20日
    29
  • java byte数组拷贝_异或校验原理

    java byte数组拷贝_异或校验原理其实在以前没接触这些内容的时候,脸上是懵逼的表情,完全不明白异或是为了干什么。其实用简单的语言来说,接收数据的异或校验相当于解密,发送时候的校验位相当于加密;官方解释是:其他数据信息传递中为保证数据传递正确可靠,在数据帧中常加载异或校验位(个人理解怕传输过程中出现数据丢失损坏的情况,所以加校验保证了数据的准确性)言归正传java中怎么异或校验1、发送数据byte[]rece=newbyte[6];rece[0]=0x55;

    2022年9月28日
    2
  • 增长思维和增长黑客_黑客手册中文版

    增长思维和增长黑客_黑客手册中文版原书:《增长黑客手册——如何用数据驱动爆发式增长》点击图片可放大查看(放大后上下滑动查看)

    2025年12月13日
    1
  • linux下开启、关闭、重启mysql服务命令

    linux下开启、关闭、重启mysql服务命令一、启动1、使用service启动:servicemysqlstart2、使用mysqld脚本启动:/etc/inint.d/mysqlstart3、使用safe_mysqld启动:safe_mysql&二、停止1、使用service启动:servicemysqlstop2、使用mysqld脚本启动:/etc/inint.d/mysqlstop3、mysqladminshutdown三、重启1、使用service启动:service.

    2025年6月28日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号