mysql將字符串字段轉為數字排序或比大小


 

 

SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ;


SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID + 1);

 
 
 

mysql將字符串字段轉為數字排序或比大小

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/superit401/article/details/78007969

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM