就是这种情况,我使用像这样的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查询中是否可以像我想要的那样排序?或者我应该重新设计表格结构并在新专栏中拆分剧集编号。
谢谢。
答案 0 :(得分:0)
我误解了你的初步要求。试试这个:
SELECT
*
FROM
tbl_name
WHERE
ORDER BY CAST(title AS UNSIGNED), title;
在这里查看小提琴示例: http://sqlfiddle.com/#!9/755b97/2
编辑:这似乎仅在数字位于前面时才有效。
这似乎是解决您问题的唯一可行解决方案,但代价是负载过重:Natural Sort in MySQL
其他解决方案是您切换到mysql 8.0,它引入了regexp_replace,允许您从字符串中提取数字,然后是ORDER BY CAST(the_result_of_your_regexp)。虽然仍然很重。
答案 1 :(得分:0)