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