题目描述数据库有一列 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
提交
取消
