一、简介
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