mysql中三种比较字符串大小的方法

项目中发现一个bug

SELECT points from table1 WHERE
(JSON_EXTRACT(points,$."27")>="333")

筛选数据不准确,会晒出333以下的数据 问题就发生在比较的时候,进行的是字符串大小的比较, 直接进行字符串比较会发生数据不准确的问题,需要手动转型

1.通过在字符串后面加0实现比较

语法:ORDER BY ‘123’+0;

示例:

SELECT 123+0>127; -- 结果为0,表示false

SELECT 123+0>12; -- 结果为1,表示true

2.使用CAST()函数比较

语法:ORDER BY CAST(‘123’ AS SIGNED);

示例:

SELECT CAST(123 AS SIGNED)>127; -- 结果为0,表示false

SELECT CAST(123 AS SIGNED)>12; -- 结果为1,表示true

3.使用CONVERT()函数比较

语法:ORDER BY CONVERT(‘123’,SIGNED);

示例:

SELECT CONVERT(123,SIGNED)>127; -- 结果为0,表示false

SELECT CONVERT(123,SIGNED)>12; -- 结果为1,表示true
经验分享 程序员 微信小程序 职场和发展