mysql中如何用varchar字符串按照數(shù)字排序
mysql用varchar字符串按照數(shù)字排序
問題
對(duì)mysql數(shù)值字符串類型進(jìn)行排序,在默認(rèn)情況下使用order by 字段名稱 desc/asc 進(jìn)行排序的時(shí)候,mysql進(jìn)行的排序規(guī)則是按照ASCII碼進(jìn)行排序的,并不會(huì)自動(dòng)的識(shí)別出這些數(shù)據(jù)是數(shù)值。
如:
L1,L2,L3…L10,L11排序,按照常規(guī)的 desc/asc 進(jìn)行排序,結(jié)果為:L1,L10,L11,L2,L3…table:
執(zhí)行sql:
select * from test order by score asc;
結(jié)果為:
期望:按照L1,L2,L3…L10,L11…的順序排序
解決
方法1:
select * from test order by score-0 asc;
方法2:
select * from test order by cast(score as signed ) asc;
方法3:
select * from test order by convert(score,signed) asc;
方法4(親測(cè)有效):
select * from test order by substr(score from 2)-0 asc;
以上方法,查詢結(jié)果為:
問題解決!
mysql按數(shù)值大小排序varchar字段
select * from table_name where 1 order by meta_value DESC; 一般用法,當(dāng)排序varchar類型的數(shù)字內(nèi)容時(shí)就會(huì)出現(xiàn)問題; select * from table_name where 1 order by --meta_value DESC; 這樣就會(huì)按照數(shù)字的大小排序了。
問題是這樣的,當(dāng)我們按由大到小的順序排序一組數(shù)字的時(shí)候,
它應(yīng)該如此:
- 9800
- 8000
- 900
但如果是這些數(shù)字是以varchar類型存儲(chǔ)的話,
直接排序的結(jié)果會(huì)是這樣:
- 9800
- 900
- 8000
解決方案1:
當(dāng)然多數(shù)情況下我們會(huì)把數(shù)字存儲(chǔ)為數(shù)字型,就可避免這一問題。但還是有一些情形,數(shù)字被存儲(chǔ)為varchar。
解決方案2:
-
meta_value ASC 。
此時(shí)采用的是按meta_value的負(fù)值排序,所以如需得到由大到小的效果,需要使用ASC而非DESC。
當(dāng)然也可以直接用
--meta_value DESC ???????
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql獲取排列序號(hào)的三種常用方法小結(jié)
這篇文章主要介紹了mysql獲取排列序號(hào)的三種常用方法,并通過代碼示例和圖文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03mysql主從基于docker和django實(shí)現(xiàn)讀寫分離
這篇文章主要介紹了mysql主從基于docker和django實(shí)現(xiàn)讀寫分離,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-08-08MySQL-tpch 測(cè)試工具簡(jiǎn)要手冊(cè)
tpch是TPC(Transaction Processing Performance Council)組織提供的工具包。用于進(jìn)行OLAP測(cè)試,以評(píng)估商業(yè)分析中決策支持系統(tǒng)(DSS)的性能。它包含了一整套面向商業(yè)的ad-hoc查詢和并發(fā)數(shù)據(jù)修改,強(qiáng)調(diào)測(cè)試的是數(shù)據(jù)庫(kù)、平臺(tái)和I/O性能,關(guān)注查詢能力2016-05-05Mysql ERROR 1067: Invalid default v
這篇文章主要介紹了Mysql ERROR 1067: Invalid default value for字段問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05mysql優(yōu)化的重要參數(shù) key_buffer_size table_cache
MySQL服務(wù)器端的參數(shù)有很多,但是對(duì)于大多數(shù)初學(xué)者來說,眾多的參數(shù)往往使得我們不知所措,但是哪些參數(shù)是需要我們調(diào)整的,哪些對(duì)服務(wù)器的性能影響最大呢2016-05-05Windows環(huán)境下MySQL 8.0 的安裝、配置與卸載
這篇文章主要介紹了Windows環(huán)境下MySQL 8.0 的安裝、配置與卸載步驟,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09