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

 更新时间:2022年06月13日 16:16:34   作者:ispotu  
这篇文章主要介绍了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”这样一个简单的操作。

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql中四种备份模式

    mysql中四种备份模式

    本文主要介绍了mysql中四种备份模式,无论使用哪种备份方式,都需要根据业务需求和数据量大小来选择合适的备份策略,并定期验证备份是否有效,感兴趣的可以了解一下
    2023-11-11
  • 解决MySQL8.0报错Client does not support authentication protocol requested by server...问题

    解决MySQL8.0报错Client does not support auth

    本文主要介绍了解决MySQL8.0报错Client does not support authentication protocol requested by server...问题,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • MYSQL 无法识别中文的永久解决方法

    MYSQL 无法识别中文的永久解决方法

    多数情况下,mysql在刚刚安装时是不支持中文的,这是由于编码的问题,那么如何解决这个方法,本文我们就来详细的了解一下
    2021-06-06
  • 浅谈innodb的索引页结构,插入缓冲,自适应哈希索引

    浅谈innodb的索引页结构,插入缓冲,自适应哈希索引

    下面小编就为大家带来一篇浅谈innodb的索引页结构,插入缓冲,自适应哈希索引。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • mysql大批量插入数据的4种方法示例

    mysql大批量插入数据的4种方法示例

    这篇文章主要给大家介绍了关于mysql大批量插入数据的4种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • MySQL5.1忘记root密码的解决办法(亲测)

    MySQL5.1忘记root密码的解决办法(亲测)

    这篇文章主要介绍了MySQL5.1忘记root密码的解决办法(亲测)的相关资料,需要的朋友可以参考下
    2016-01-01
  • MySQL Prepared Statement 预处理的操作方法

    MySQL Prepared Statement 预处理的操作方法

    预处理语句是一种在数据库管理系统中使用的编程概念,用于执行对数据库进行操作的 SQL 语句,这篇文章主要介绍了MySQL Prepared Statement 预处理 ,需要的朋友可以参考下
    2024-08-08
  • MySQL安装服务时提示:Install/Remove of the Service Denied解决

    MySQL安装服务时提示:Install/Remove of the Service Denied解决

    今天给新电脑安装了mysql,本来好好的,却报了个bug,就记录下吧,这篇文章主要给大家介绍了关于MySQL安装服务时提示:Install/Remove of the Service Denied的解决办法,需要的朋友可以参考下
    2023-03-03
  • MySQL学习之事务详解

    MySQL学习之事务详解

    在数据库中 事务(transaction) 可以把多个SQL给打包到一起, 即将多个SQL语句变成一个整体, 也就是说一个事务中的所有操作要么全部成功执行, 要么完全不执行.本文主要来和大家聊聊事务的使用,需要的可以参考一下
    2022-12-12
  • 一次Mysql死锁排查过程的全纪录

    一次Mysql死锁排查过程的全纪录

    在测试环境测试给用户并发发送卡券时,出现了死锁,通过查找相关的资料解决了这个,所以想着总结出来,所以下面这篇文章主要是关于一次Mysql死锁排查过程的全纪录,需要的朋友可以参考下,希望大家从中能有所帮助。
    2017-02-02

最新评论