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
下一篇:
干货丨KingbaseES中的RPC介绍