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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Linux下實現(xiàn)MySQL數(shù)據(jù)備份和恢復的命令使用全攻略
這篇文章主要介紹了Linux下實現(xiàn)MySQL數(shù)據(jù)備份和恢復的命令使用全攻略,包括使用Mysqldump和LVM快照以及xtrabackup三種方法,傾力推薦!需要的朋友可以參考下2015-11-11
MySql5.7.11編譯安裝及修改root密碼的方法小結(jié)
這篇文章主要介紹了MySql5.7.11編譯安裝及修改root密碼的方法小結(jié)的相關資料,需要的朋友可以參考下2016-04-04
MySQL?數(shù)據(jù)庫如何實現(xiàn)存儲時間
這篇文章主要介紹了MySQL?數(shù)據(jù)庫如何實現(xiàn)存儲時間,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Mac OS系統(tǒng)下mysql 5.7.20安裝教程圖文詳解
這篇文章主要介紹了Mac OS系統(tǒng)下mysql 5.7.20安裝教程圖文詳解,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2017-11-11
mysql執(zhí)行腳本導入表和數(shù)據(jù)后中文注釋亂碼的問題解決
本人在使用不同版本下進行操作時,就會出現(xiàn)中文亂碼的問題,,例如我本地安裝mysql8,服務器安裝的是mysql5,然后本地連接服務器的mysql后,執(zhí)行SQL腳本之后發(fā)現(xiàn)中文全部亂碼,所以本文介紹了mysql執(zhí)行腳本導入表和數(shù)據(jù)后中文注釋亂碼的問題解決,需要的朋友可以參考下2024-04-04
mysql如何根據(jù).frm和.ibd文件恢復數(shù)據(jù)表
這篇文章主要介紹了mysql根據(jù).frm和.ibd文件恢復數(shù)據(jù)表的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
MySQL按時間統(tǒng)計數(shù)據(jù)的方法總結(jié)
在本篇MYSQL的內(nèi)容里,我們給大家整理了關于按時間統(tǒng)計數(shù)據(jù)的方法內(nèi)容,有需要的朋友們學習下。2019-02-02

