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