大家好,又见面了,我是你们的朋友全栈君。
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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139407.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...