Mysql字符串類(lèi)型如何通過(guò)order by排序的正確方式
Mysql字符串類(lèi)型通過(guò)order by排序
1、假設(shè)有如下字符串?dāng)?shù)據(jù)想通過(guò)order by 進(jìn)行 ASC 和 DESC排序,可能達(dá)不到想要的效果。
SELECT * FROM file_2021 ORDER BY file_no ASC;
2、有時(shí)候我們希望從長(zhǎng)度和大小順序或者逆序排序,則可采用左補(bǔ)齊 lpad 函數(shù)配合ASC和DESC完成,lpad(目標(biāo)字符串,要補(bǔ)齊的長(zhǎng)度位數(shù),采用哪個(gè)字符補(bǔ)齊),要補(bǔ)齊的長(zhǎng)度位數(shù)可采用該字段最長(zhǎng)的一條數(shù)據(jù)位數(shù)。
SELECT * FROM file_2021 ORDER BY lpad(file_no, 20, 0) ASC;
SELECT * FROM file_2021 ORDER BY lpad(file_no, 20, 0) DESC;
3、lpad的補(bǔ)齊效果如下,配合order by 就可完成想要的排序方式
Mysql字符串?dāng)?shù)字排序
如果您的 MySQL 數(shù)據(jù)庫(kù)中的字符串只包含數(shù)字并且您想按數(shù)字順序?qū)λ鼈冞M(jìn)行排序,可以使用 MySQL 內(nèi)置的 CAST() 函數(shù)將字符串轉(zhuǎn)換為數(shù)字,然后對(duì)數(shù)字進(jìn)行排序。
例如:
假設(shè)您有一個(gè)名為 mytable 的表,其中包含一個(gè)名為 mycolumn 的列,該列包含字符串?dāng)?shù)字,您可以使用以下查詢(xún)對(duì)它們進(jìn)行排序:
SELECT mycolumn FROM mytable ORDER BY CAST(mycolumn AS UNSIGNED) ASC;
這將按升序順序返回 mytable 中的所有行,并將 mycolumn 中的字符串?dāng)?shù)字轉(zhuǎn)換為無(wú)符號(hào)整數(shù)進(jìn)行排序。
如果您想按降序順序?qū)λ鼈冞M(jìn)行排序,可以將 ASC 替換為 DESC。
請(qǐng)注意,如果 mycolumn 中包含非數(shù)字字符,則 CAST() 函數(shù)將返回 0。
因此,如果您的列中包含其他字符,則可能需要使用其他方法來(lái)排序。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL中TIMESTAMP類(lèi)型返回日期時(shí)間數(shù)據(jù)中帶有T的解決
這篇文章主要介紹了MySQL中TIMESTAMP類(lèi)型返回日期時(shí)間數(shù)據(jù)中帶有T的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Mysql查詢(xún)最近一條記錄的sql語(yǔ)句(優(yōu)化篇)
這篇文章主要介紹了Mysql查詢(xún)最近一條記錄的sql語(yǔ)句,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05Mysql?InnoDB引擎中的數(shù)據(jù)頁(yè)結(jié)構(gòu)詳解
這篇文章主要為大家介紹了Mysql?InnoDB引擎中的數(shù)據(jù)頁(yè)結(jié)構(gòu)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05PHP學(xué)習(xí)之SQL語(yǔ)句快速入門(mén)
在學(xué)校php過(guò)程中,需要用得到的一些語(yǔ)句。比較簡(jiǎn)單的大家一定要掌握啊。2010-03-03美團(tuán)DB數(shù)據(jù)同步到數(shù)據(jù)倉(cāng)庫(kù)的架構(gòu)與實(shí)踐
今天小編就為大家分享一篇關(guān)于美團(tuán)DB數(shù)據(jù)同步到數(shù)據(jù)倉(cāng)庫(kù)的架構(gòu)與實(shí)踐,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02如何通過(guò)SQL找出2個(gè)表里值不同的列的方法
本篇文章對(duì)如何通過(guò)SQL找出2個(gè)表里值不同的列的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05淺談Using filesort和Using temporary 為什么這么慢
本文主要介紹了Using filesort和Using temporary為什么這么慢,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02MySQL查詢(xún)in操作 查詢(xún)結(jié)果按in集合順序顯示
MySQL 查詢(xún)in操作,查詢(xún)結(jié)果按in集合順序顯示的實(shí)現(xiàn)代碼,需要的朋友可以參考下。2010-12-12MySQL優(yōu)化表時(shí)提示 Table is already up to date的解決方法
這篇文章主要介紹了MySQL優(yōu)化表時(shí)提示 Table is already up to date的解決方法,需要的朋友可以參考下2016-11-11