Sql 如何按字符串的特定部分排序?

Sql 如何按字符串的特定部分排序?,sql,mysql,Sql,Mysql,如何按字符串的特定部分排序,假设我有列code,其值的格式如下:LLL_NNN,示例dGd_542。如何按字符串的第二部分(数字)排序?您应该能够从代码中提取 order by SUBSTRING(codes, 4) asc 使用子字符串功能 SELECT * FROM tablename ORDER BY SUBSTRING(codes FROM 4) 在非常大的表上,这可能会导致性能问题。(首先是关于数据库结构的强制性注释) 似乎您有两个有意义的值编码到单个列code。如果可能的话,您应

如何按字符串的特定部分排序,假设我有列
code
,其值的格式如下:LLL_NNN,示例dGd_542。如何按字符串的第二部分(数字)排序?

您应该能够从代码中提取

order by SUBSTRING(codes, 4) asc

使用
子字符串
功能

SELECT * FROM tablename
ORDER BY SUBSTRING(codes FROM 4)
在非常大的表上,这可能会导致性能问题。

(首先是关于数据库结构的强制性注释)

似乎您有两个有意义的值编码到单个列
code
。如果可能的话,您应该重构数据库,使它们成为独立的列。然后,排序问题就消失了

(现在是使用现有数据库结构的答案)

可以使用表达式并按该表达式排序:

 SELECT c1, c2, c3, SUBSTRING_INDEX(codes, '_', 2) as code_value
    FROM table ORDER BY code_value

如果我理解,这可以解决你的问题

选择子字符串(字段5、7)作为 db.table中的字段2按字段顺序排列


LOL.添加的标签使我以前的评论看起来很愚蠢。他们本来不在那里。删除之前的评论。如果是这样,请原谅(没有检查标签的时间)。@David Stratton:是的,有,但没有问题:)是的,我可能只是瞎了眼。我通常不需要别人的帮助来让我听起来很傻。看来你得到了很好的答案!