问题场景
表名: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
本文介绍了一种MySQL中针对特定表字段进行复杂字符串处理并排序的方法。通过对gene_id字段使用SUBSTRING_INDEX函数,提取以'_'分割后的第三部分,并按其倒序排列。此技巧适用于需对复合字符串进行数值排序的情况。
543

被折叠的 条评论
为什么被折叠?



