如何按字符串的某些部分排序?

时间:2011-01-24 18:06:00

标签: sql mysql

如何按字符串的某些部分排序,假设我的列codes具有以下格式的值:LLL_NNN,示例dGd_542。我如何通过数字的字符串的第二部分订购?

4 个答案:

答案 0 :(得分:11)

您应该只能从代码中提取substring

order by SUBSTRING(codes, 4) asc

答案 1 :(得分:3)

使用SUBSTRING函数

SELECT * FROM tablename
ORDER BY SUBSTRING(codes FROM 4)

在非常大的表上,这可能会导致性能问题。

答案 2 :(得分:3)

(首先是对数据库结构的强制性评论)

您似乎将两个有意义的值编码到单个列codes中。如果可能的话,您应该重构数据库,以便这些是单独的列。然后排序问题就消失了。

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

您可以使用该表达式的表达式和顺序:

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

答案 3 :(得分:2)

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

  

选择substring(field,5,7)as   db2table by field;

的field2