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