mysql 中文含数字排序_英语| 124期 Sort 坑爹的字符串排序
排序功能在系統(tǒng)中很常見,主要是對數(shù)字類型的字段進行升降排序。但是針對那些字符串數(shù)字或者帶字符的數(shù)字字符串,普通的Sort排序就會出現(xiàn)各種各樣的問題。比如對字符串數(shù)字進行降序排序,會出現(xiàn):9,8,7,6,5,4,3,2,1,10,11這種異常情況。如何處理?請往下看。
單詞語法
Grammar
Sort
英 [s??t]? ?美 [s??rt]??
n. 種類;類別;品種;某一種(或某一類)人;分類;排序
v. 整理;把…分類;妥善處理;安排妥當
| 復數(shù) | sorts |
| 第三人稱單數(shù) | sorts |
| 現(xiàn)在分詞 | sorting |
| 過去式 | sorted |
| 過去分詞 | sorted |
經(jīng)典例句
| We sort out the rubbish. |
| 我們把垃圾進行分類。 |
編程語法
Java
需求:數(shù)據(jù)庫有一張cabinet表,其中字段code的生成規(guī)則是字母加上自增的編號(CK2_9,CK2_10之類);目前要求通過code字段進行降序排序。
思路:如果直接用Spring的Sort.by方法或者是MySQL的order by 函數(shù)。都會出現(xiàn)下面這種情況。如何處理?我目前有三種解決方法,歡迎補充!!!
| code |
| CK2_9 |
| CK2_8 |
| CK2_7 |
| CK2_12 |
| CK2_11 |
| CK2_10 |
第一種方法:直接利用MySQL自帶的函數(shù)substring_index 對code字段進行字符串分隔。獲取需要的數(shù)字部分,再通過+0的操作,將數(shù)字字符串轉成純數(shù)字。若數(shù)據(jù)量太大,則不推薦。
| select * from cabinet order by (substring_index(code, '_', -1)+0) desc |
第二種方法:萬金油方法,通過添加輔助字段解決排序問題。實在沒有解決方案再用。
第三種方法:規(guī)范code數(shù)字部分的長度,補齊數(shù)字部分的長度,不足用0填充。比如將CK2_9和CK2_10 格式化成?CK2_009 和 CK2_010。然后就可以使用普通的排序方法。該方法需要提前預算數(shù)據(jù)量的大小,提前設置數(shù)字位的長度。
| select code from cabinet order by code desc? |
| String.format("%04d", 1) |
以下是正常輸出結果
| code |
| CK2_12 |
| CK2_11 |
| CK2_10 |
| CK2_09 |
| CK2_08 |
| CK2_07 |
往期精彩
previous
英語| 123期 Schedule時刻表
英語| 122期 Space空格
英語| 121期 Memory內(nèi)存
英語| 120期 Variable變量
英語| 119期 Parameter參數(shù)
英語| 118期 Index 索引
英語| 117期 Divide 分開
總結
以上是生活随笔為你收集整理的mysql 中文含数字排序_英语| 124期 Sort 坑爹的字符串排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: datatable 能不能有vlooku
- 下一篇: linux cmake编译源码,linu