mysql實現(xiàn)將字符串字段轉(zhuǎn)為數(shù)字排序或比大小
將字符串字段轉(zhuǎn)為數(shù)字排序或比大小
mysql里面有個坑就是,有時按照某個字段的大小排序(或是比大?。┌l(fā)現(xiàn)排序有點錯亂。后來才發(fā)現(xiàn),是我們想當(dāng)然地把對字符串字段當(dāng)成數(shù)字并按照其大小排序(或是比大?。Y(jié)果肯定不會是你想要的結(jié)果。
這時候需要把字符串轉(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; ?-- ? 結(jié)果為123 SELECT '123'+0>127; ?-- ? 結(jié)果為0 SELECT '123'+0>12; ?-- ? 結(jié)果為1 SELECT CAST('123' AS SIGNED); ? ?-- ?結(jié)果為123 SELECT CONVERT('123',SIGNED)>127; ? -- ?結(jié)果為0 SELECT CONVERT('123',SIGNED)>12; ? -- ?結(jié)果為1 SELECT CAST('123' AS SIGNED); ?-- 結(jié)果為123 SELECT CAST('123' AS SIGNED)>127; ?-- 結(jié)果為0 SELECT CAST('123' AS SIGNED)>12; ? -- 結(jié)果為1
綜合例子:
SELECT '123'+0>12 ORDER BY CONVERT('123',SIGNED); ?-- ?結(jié)果為1
sql語句字符串如何比較大小
需求如下,字段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”這樣一個簡單的操作。
運行結(jié)果貼出來,自己看吧
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL中JSON_ARRAYAGG和JSON_OBJECT函數(shù)功能和用法
JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,它可以用來存儲和表示結(jié)構(gòu)化的數(shù)據(jù),在MySQL數(shù)據(jù)庫中,JSON格式的數(shù)據(jù)處理已經(jīng)變得越來越常見,本文將深入探討這兩個函數(shù)的用途、語法和示例,以幫助您更好地理解它們的功能和用法,需要的朋友可以參考下2023-09-09SQL查詢超時的設(shè)置方法(關(guān)于timeout的處理)
為了優(yōu)化OceanBase的query timeout設(shè)置方式,特調(diào)研MySQL關(guān)于timeout的處理,下面與大家分享下處理記錄,感興趣的朋友可以參考下哈2013-04-04mysql?8.0.29?winx64.zip安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql?8.0.29?winx64.zip安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06Mysql連接本地報錯:1130-host?...?is?not?allowed?to?connect?t
這篇文章主要給大家介紹了關(guān)于Mysql連接本地報錯:1130-host?...?is?not?allowed?to?connect?to?this?MySQL?server的解決方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03