mysql實現(xiàn)將字符串字段轉(zhuǎn)為數(shù)字排序或比大小
將字符串字段轉(zhuǎn)為數(shù)字排序或比大小
mysql里面有個坑就是,有時按照某個字段的大小排序(或是比大?。┌l(fā)現(xiàn)排序有點錯亂。后來才發(fā)現(xiàn),是我們想當然地把對字符串字段當成數(shù)字并按照其大小排序(或是比大?。?,結果肯定不會是你想要的結果。
這時候需要把字符串轉(zhuǎn)成數(shù)字再排序。
最簡單的辦法就是在字段后面加上+0
如把'123'轉(zhuǎn)成數(shù)字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); ?-- ?結果為1sql語句字符串如何比較大小
需求如下,字段A是varchar類型,現(xiàn)在要將字段A與一個數(shù)字比較。上網(wǎng)搜索了一下,99%給出的方法都是cast(字段A as int),或者convent(int,字段A)。
不知道為啥,這兩種方法我都試了,語法都不通過,更不用說運行了。
解決方法
寫法如下:
select * from XX where 字段A+0 < 數(shù)字 + 0
是的,你沒看錯,就是“+0”這樣一個簡單的操作。

運行結果貼出來,自己看吧
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL無法重啟報錯Warning: World-writable config file ‘/etc/my.cnf’
最近在維護公司服務器的時候,在關閉數(shù)據(jù)庫的命令發(fā)現(xiàn)mysql關不了了,提示錯誤為Warning: World-writable config file '/etc/my.cnf' is ignored,通過查找網(wǎng)上的資料終于解決了,現(xiàn)在將解決的方法分享給大家,同樣遇到這個問題的朋友們可以參考借鑒。2016-12-12
linux mysql忘記密碼的多種解決或Access denied for user ''root''@''local
linux mysql忘記密碼的多種解決方法。2009-07-07

