Mysql指定某個(gè)字符串字段前面幾位排序查詢方式
指定某個(gè)字符串字段前面幾位排序查詢
數(shù)據(jù)樣例
想要結(jié)果:
每個(gè)test_value 里面都包含 ORDER 關(guān)鍵字, 想根據(jù)這個(gè)關(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é)果并不是我們想要的:
原因,之前講過(guò),字符串類型對(duì)應(yīng)mysql排序,它是這樣排的:
所以我們需要做轉(zhuǎn)換成數(shù)字再排 。
第三步轉(zhuǎn)換排序
第一種方案 :
使用 CAST函數(shù) 轉(zhuǎn)換類型
unsigned
表示無(wú)符號(hào),不能表示小數(shù)signed
表示有符號(hào),可以表示小數(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
表示無(wú)符號(hào),不能表示小數(shù)signed
表示有符號(hào),可以表示小數(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é)
好了,該篇到這里吧~
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
select?into?from和insert?into?select的使用舉例詳解
select into from和insert into select都是用來(lái)復(fù)制表,下面這篇文章主要給大家介紹了關(guān)于select?into?from和insert?into?select使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04mysql創(chuàng)建表分區(qū)的實(shí)現(xiàn)示例
表分區(qū)是指根據(jù)一定規(guī)則,將數(shù)據(jù)庫(kù)中的一張表分解成多個(gè)更小的,容易管理的部分,本文主要介紹了mysql創(chuàng)建表分區(qū)的實(shí)現(xiàn)示例,感興趣的可以了解一下2024-01-01詳解MySQL存儲(chǔ)過(guò)程的創(chuàng)建和調(diào)用
這篇文章主要為大家介紹了MySQL存儲(chǔ)過(guò)程的創(chuàng)建和調(diào)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-12-12mysql觸發(fā)器中包含select語(yǔ)句問(wèn)題
這篇文章主要介紹了mysql觸發(fā)器中包含select語(yǔ)句問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08MySQL 原理與優(yōu)化之Update 優(yōu)化
這篇文章主要介紹了MySQL 原理與優(yōu)化之Update 優(yōu)化,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-08-08MySQL表字段時(shí)間設(shè)置默認(rèn)值
很多人可能會(huì)把日期類型的字段的類型設(shè)置為 date或者 datetime,但是這些不是當(dāng)前時(shí)間,那么如何把字段時(shí)間設(shè)置成當(dāng)前時(shí)間,本文就具體來(lái)介紹一下2021-05-05