SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ;
SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID + 1);
mysql將字符串字段轉為數字排序或比大小
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
