MYSQL資料庫字母數字混合字段排序問題

2021-09-07 16:28:31 字數 629 閱讀 4086

對mysql資料表裡的乙個字元型字段排序,其內容格式為一位字母+順序數字。數字沒有前導零,長度不固定。

這種含字母的數字序列,排序出來的結果和我們想要的結果是不一樣的,因為它不是純數字,只能按字元規則排。

結果是a1,a10,a11,a12。。。。a19,a2,a20,a21。。。。

而不是我們通常感覺中的a1,a2,a3,。。。。。a10,a11,這樣的結果。

想要得到正確的排序有兩個辦法。

一是改變字段內容結構,在數字前加上零,讓所有的字段值擁有相同的長度。

二是不改變字段內容,在排序的sql語句上想辦法。

order by mid(column,2,10) +1

mid()第乙個引數是字串內容,可以是欄位名。第二個引數是起始字元的位置,我這裡需要從第二個字元開始。第三個引數是需要取得的長度,要選乙個可以包含所有字段內容長度的值,寧大勿小。

但這樣取出來的還只是「數字內容的字串」,對它排序仍然使用字元規則,不會得到我們想要的結果。

這時需要給這個結果再加上乙個數值,讓mysql對它進行一次算術運算,然後得到的就是乙個整型值,這時再排序就是數字順序的結果了。

例如:select * from equipmentmes order by mid(eqid,2,10) +1

MySQL 字母數字混合排序問題

資料庫有列字段 column zz 1 tt 2 tt 19 zz 12 zz 3 zz 2 zz 9 tt 1 tt 3 tt 4 tt 5 有位小鵬友要我先按字母排序,再按數字排序,方便檢視。顯示為 column tt 1 tt 2 tt 3 tt 4 tt 5 tt 19 zz 1 zz 2 ...

混合雲部署MySQL集群 資料庫混合雲解決方案

核心產品 hdmhdm hybrid cloud database management 是混合雲資料庫管理平台,可打通混合雲資料庫架構,提供雲下 雲上多環境統一管理,使用者通過hdm可一鍵快速彈性擴充套件 容災切換,操作更便捷。hdm的核心元件之一dbgateway可實現各種型別 多種環境下資料庫...

生成mysql資料庫字典 快速生成資料庫字典

select tablename case when c.column id 1 then o.name else n end tabledesc isnull case when c.column id 1 then ptb.value end,n column id c.column id,co...