下面是这样的情况,我使用了这样一个MySQL查询
SELECT
*
FROM
tbl_name
WHERE
id = 1
ORDER BY LENGTH(title), title;但是当有这样的标题时
科南侦探第797.5集英文版
科南侦探第829.2集英文版
它变成了
科南侦探第897部英文版
科南侦探第898部英文版
科南侦探第797.5集英文版
科南侦探第829.2集英文版
正确的一个必须像这个
科南侦探第797.5集英文版
科南侦探第829.2集英文版
科南侦探第897部英文版
科南侦探第898部英文版
在MySQL查询中,是否有可能按照我想要的进行排序?或者我应该重新设计表格结构,并在一个新的专栏中拆分插集号。
谢谢。
发布于 2018-04-26 07:59:03
我误解了你最初的要求。试试这个:
SELECT
*
FROM
tbl_name
WHERE
ORDER BY CAST(title AS UNSIGNED), title;查看这里的小提琴示例:http://sqlfiddle.com/#!9/755b97/2
编辑:这似乎只有当数字在前面时才起作用。
这似乎是解决问题的唯一解决方案,但代价是沉重的负担:Natural Sort in MySQL
其他解决方案是让您切换到MySQL8.0,它引入了regexp_replace,允许您从字符串中提取数字,然后再使用the_result_of_your_regexp命令。不过还是很重的。
发布于 2018-04-26 08:13:56
@Aurelien如果我使用:
SELECT
*
FROM
tbl_name
WHERE
id = 1
ORDER BY LENGTH(title) DESC, title DESC但是如果图片上的标题是这样的话,还是有问题的

https://stackoverflow.com/questions/50037699
复制相似问题