问题场景
表名:tb_a
表字段:id,gene_id,chr [都是varchar]
值:
要求按照以’_’分割后的第三位大小倒序排序记录。
解决思路
a 取出目标数字字符串(首先实现split函数),起一个别名为num
b 按照MYSQL-对varchar类型字段(都是数字)按照整数大小倒序排列 文章思路排序
SQL
select *, SUBSTRING(SUBSTRING_INDEX(gene_id, '_', 3), LENGTH(SUBSTRING_INDEX(gene_id, '_', 3 - 1)) + 2) as num
from tb_a order by -num asc
//例如:gene_id为xx_AVC_100_3 -> 100
a SUBSTRING_INDEX(gene_id, '_', 3) => xx_AVC_100
b SUBSTRING_INDEX(gene_id, '_', 3 - 1) => xx_AVC
c LENGTH(SUBSTRING_INDEX(gene_id, '_', 3 - 1)) => 6
d SUBSTRING('xx_AVC_100', 6 + 2) => 100