mysql字符数字组合进行排序

需求:

有张课程表,等级,课程,页码是一个字符串,例如:L1-L10-P3,直接order by达不到想要的效果,如实写出如下sql语句。

SELECT
SUBSTRING(ld.page_no , 2 , 1) ,
SUBSTRING_INDEX(
    SUBSTRING_INDEX(ld.page_no , "-l" ,- 1) ,
    "-p" ,
    1
    ) ,
SUBSTRING_INDEX(
    SUBSTRING_INDEX(ld.page_no , "-p" ,- 1) ,
    "-p" ,
    1
    ) ,
ld.*
FROM
lesson_data ld
ORDER BY
CAST(
    SUBSTRING(ld.page_no , 2 , 1) AS DECIMAL
    ) ASC ,
CAST(
    SUBSTRING_INDEX(
        SUBSTRING_INDEX(ld.page_no , "-l" ,- 1) ,
        "-p" ,
        1
        ) AS DECIMAL
    ) ASC ,
CAST(
    SUBSTRING_INDEX(
        SUBSTRING_INDEX(ld.page_no , "-p" ,- 1) ,
        "-p" ,
        1
        ) AS DECIMAL
    ) ASC;

最后效果,注意看page_no那一行:

mysql字符数字组合进行排序_第1张图片

你可能感兴趣的:(mysql)