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

2022-06-13 20:04:09
目录
将字符串字段转为数字排序或比大小排序比大小sql语句字符串如何比较大小解决方法

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

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>

        不知道为啥,这两种方法我都试了,语法都不通过,更不用说运行了。

        解决方法

        写法如下:

        select * from XX where 字段A+0 < 数字 + 0

        是的,你没看错,就是“+0”这样一个简单的操作。

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

        以上为个人经验,希望能给大家一个参考,也希望大家多多支持易采站长站。