題目描述數據庫有一列 name 數據如下**楚喬傳 第1集楚喬傳 第2集...楚喬傳 第10集**或者楚喬傳 02楚喬傳 02...楚喬傳 11如何按照大小習慣排序題目來源及自己的思路現在我自己做是自定義一個函數get_num_from_char提取連續的數字然后order by get_num_from_char(name)前輩們有什么更好的解決方法嗎相關代碼本來是想用一個單獨的字段比如sort來自管理這個排序但是用戶是從一個媒體庫導入的列表,不想手動處理
1 回答
皈依舞
TA貢獻1851條經驗 獲得超3個贊
就像你說的啊,寫一個過濾函數 get_num_from_char(name) 返回一個序號,然后另存到一個字段
例如,一個很簡單的思路就是:替換 一二三 為 123,然后留下數字 0-9 就行了
XXX第1集 轉成 1XXXX-002集-HD 轉成 002第一季第003集,轉成 1003第二季第004集,轉成 2004第三季第005集.1080P,轉成 30051080第四季第006集-1080P,轉成 40061080大結局 之類的,特殊處理下,轉成數字 99999999 之類的
把結果保存到一個 rank 字段,以后都用這個字段做 order by 排序
只要保證同一個系列的,名字格式類似,就行了
吐槽一句,sort 是動詞,數據庫字段,請用名詞
另外,有看到說直接字符串排序的……只能說想象是美好的……
實際上會變成 1、10、11……2、20、21……3、30、31…… 這種
添加回答
舉報
0/150
提交
取消
