需求:
有张课程表,等级,课程,页码是一个字符串,例如: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那一行: