Mysql指定某個字符串字段前面幾位排序查詢方式
指定某個字符串字段前面幾位排序查詢
數(shù)據(jù)樣例

想要結(jié)果:
每個test_value 里面都包含 ORDER 關(guān)鍵字, 想根據(jù)這個關(guān)鍵字 前面的數(shù)字進(jìn)行排序。
第一步(想辦法先截取到 ORDER關(guān)鍵字前面的 值)
使用SUBSTRING_INDEX 函數(shù)
sql :
SELECT ID,SUBSTRING_INDEX(test_value,"ORDER",1) AS NO, test_value ?FROM ?test
結(jié)果:

第二步,直接根據(jù)NO排序即可? (有坑)
sql :
select * FROM ( SELECT ID,SUBSTRING_INDEX(test_value,"ORDER",1) AS NO, test_value ?FROM ?test )t ?ORDER BY t.NO DESC?
結(jié)果并不是我們想要的:

原因,之前講過,字符串類型對應(yīng)mysql排序,它是這樣排的:

所以我們需要做轉(zhuǎn)換成數(shù)字再排 。
第三步轉(zhuǎn)換排序
第一種方案 :
使用 CAST函數(shù) 轉(zhuǎn)換類型
unsigned表示無符號,不能表示小數(shù)signed表示有符號,可以表示小數(shù)
SELECT * FROM ( SELECT ID,SUBSTRING_INDEX(test_value,"ORDER",1) AS NO, test_value ?FROM ?test )t ?ORDER BY ?CAST(t.NO AS SIGNED)?
結(jié)果OK的:

第二種方案
排序的字符串字段值后拼接 0 ,觸發(fā)轉(zhuǎn)換成數(shù)字
sql:
SELECT * FROM ( SELECT ID,SUBSTRING_INDEX(test_value,"ORDER",1) AS NO, test_value ?FROM ?test )t ?ORDER BY ?t.NO+0
結(jié)果是OK的:

第三種方案:
CONVERT 函數(shù) 轉(zhuǎn)換類型
unsigned表示無符號,不能表示小數(shù)signed表示有符號,可以表示小數(shù)
sql:
SELECT * FROM ( SELECT ID,SUBSTRING_INDEX(test_value,"ORDER",1) AS NO, test_value ?FROM ?test )t ?ORDER BY ?CONVERT(t.NO,SIGNED)
結(jié)果是OK的:

總結(jié)
好了,該篇到這里吧~
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql線上查詢之前要性能調(diào)優(yōu)的技巧及示例
文章介紹了查詢優(yōu)化的幾種方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查詢和派生表的優(yōu)化、查詢提示和優(yōu)化器提示等,這些方法可以幫助提高數(shù)據(jù)庫性能,減少查詢的執(zhí)行時間和資源消耗,感興趣的朋友一起看看吧2025-03-03
很全面的MySQL處理重復(fù)數(shù)據(jù)代碼
這篇文章主要為大家詳細(xì)介紹了MySQL處理重復(fù)數(shù)據(jù)的實現(xiàn)代碼,如何防止數(shù)據(jù)表出現(xiàn)重復(fù)數(shù)據(jù)及如何刪除數(shù)據(jù)表中的重復(fù)數(shù)據(jù),感興趣的小伙伴們可以參考一下2016-05-05
Mysql報錯1292:Incorrect datetime value for 
本文主要介紹了Mysql報錯1292:Incorrect datetime value for column create_time at row 1 解決方案,1292 是指插入或更新操作時,日期或時間值不正確引起的錯誤,下面就來介紹一下2024-02-02
Centos7 移動mysql5.7.19 數(shù)據(jù)存儲位置的操作方法
這篇文章主要介紹了Centos7 移動mysql5.7.19 數(shù)據(jù)存儲位置的實現(xiàn)方法,需要的朋友可以參考下2017-10-10
淺談MySQL安裝starting the server失敗的解決辦法
如果電腦是不是第一次安裝MySQL,一般會出現(xiàn)報錯情況,starting the server失敗,通常是因為上次安裝的該軟件未清除干凈,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解一下2021-09-09
輕松掌握MySQL函數(shù)中的last_insert_id()
相信大家應(yīng)該都知道Mysql函數(shù)可以實現(xiàn)許多我們需要的功能,這篇文章介紹的Mysql函數(shù)Last_insert_id()就是其中之一,文章通過一個例子展開來講,應(yīng)該更有助于大家的理解和學(xué)習(xí),有需要的朋友們下面來一起看看吧。2016-12-12
mysql行鎖(for update)解決高并發(fā)問題
這篇文章主要介紹了mysql行鎖(for update)解決高并發(fā)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08

