mysql實現將字符串字段轉為數字排序或比大小
將字符串字段轉為數字排序或比大小
mysql里面有個坑就是,有時按照某個字段的大小排序(或是比大?。┌l(fā)現排序有點錯亂。后來才發(fā)現,是我們想當然地把對字符串字段當成數字并按照其大小排序(或是比大?。?,結果肯定不會是你想要的結果。
這時候需要把字符串轉成數字再排序。
最簡單的辦法就是在字段后面加上+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
sql語句字符串如何比較大小
需求如下,字段A是varchar類型,現在要將字段A與一個數字比較。上網搜索了一下,99%給出的方法都是cast(字段A as int),或者convent(int,字段A)。
不知道為啥,這兩種方法我都試了,語法都不通過,更不用說運行了。
解決方法
寫法如下:
select * from XX where 字段A+0 < 數字 + 0
是的,你沒看錯,就是“+0”這樣一個簡單的操作。
運行結果貼出來,自己看吧
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL中JSON_ARRAYAGG和JSON_OBJECT函數功能和用法
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,它可以用來存儲和表示結構化的數據,在MySQL數據庫中,JSON格式的數據處理已經變得越來越常見,本文將深入探討這兩個函數的用途、語法和示例,以幫助您更好地理解它們的功能和用法,需要的朋友可以參考下2023-09-09mysql?8.0.29?winx64.zip安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了mysql?8.0.29?winx64.zip安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06Mysql連接本地報錯:1130-host?...?is?not?allowed?to?connect?t
這篇文章主要給大家介紹了關于Mysql連接本地報錯:1130-host?...?is?not?allowed?to?connect?to?this?MySQL?server的解決方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-03-03