題目描述數(shù)據(jù)庫有一列 name 數(shù)據(jù)如下**楚喬傳 第1集楚喬傳 第2集...楚喬傳 第10集**或者楚喬傳 02楚喬傳 02...楚喬傳 11如何按照大小習慣排序題目來源及自己的思路現(xiàn)在我自己做是自定義一個函數(shù)get_num_from_char提取連續(xù)的數(shù)字然后order by get_num_from_char(name)前輩們有什么更好的解決方法嗎相關(guān)代碼本來是想用一個單獨的字段比如sort來自管理這個排序但是用戶是從一個媒體庫導(dǎo)入的列表,不想手動處理
1 回答

皈依舞
TA貢獻1851條經(jīng)驗 獲得超3個贊
就像你說的啊,寫一個過濾函數(shù) get_num_from_char(name)
返回一個序號,然后另存到一個字段
例如,一個很簡單的思路就是:替換 一二三
為 123
,然后留下數(shù)字 0-9
就行了
XXX第1集
轉(zhuǎn)成 1
XXXX-002集-HD
轉(zhuǎn)成 002
第一季第003集
,轉(zhuǎn)成 1003
第二季第004集
,轉(zhuǎn)成 2004
第三季第005集.1080P
,轉(zhuǎn)成 30051080
第四季第006集-1080P
,轉(zhuǎn)成 40061080
大結(jié)局
之類的,特殊處理下,轉(zhuǎn)成數(shù)字 99999999
之類的
把結(jié)果保存到一個 rank
字段,以后都用這個字段做 order by
排序
只要保證同一個系列的,名字格式類似,就行了
吐槽一句,sort
是動詞,數(shù)據(jù)庫字段,請用名詞
另外,有看到說直接字符串排序的……只能說想象是美好的……
實際上會變成 1、10、11……2、20、21……3、30、31……
這種
添加回答
舉報
0/150
提交
取消