我有一张表:
id name
--------
1 clark_009
2 clark_012
3 johny_002
4 johny_010
我需要按此顺序获得结果:
johny_002
clark_009
johny_010
clark_012
不要问我已经尝试过什么,我不知道该怎么做。
答案 0 :(得分:40)
这样做,非常简单地选择最右边的3个字符并按该值递增排序。
SELECT *
FROM table_name
ORDER BY RIGHT(name, 3) ASC;
应该补充一点,随着数据的增长,这将成为一种效率低下的解决方案。最后,您可能希望将数字附录存储在单独的索引整数列中,以便排序效率最佳。
答案 1 :(得分:8)
你应该试试这个。
SELECT * FROM Table order by SUBSTRING(name, -3);
祝你好运!
答案 2 :(得分:3)
您可以应用substring_index函数来解析这些值 -
select * from table order by substring_index(name, '_', -1)
答案 3 :(得分:2)
您可以使用MySQL SUBSTRING()
函数按子字符串
语法:
SUBSTRING(string,position,length)
示例:按字符串的最后3个字符排序
SELECT * FROM TableName ORDER BY SUBSTRING(FieldName, -3);
#OR
SELECT * FROM TableName ORDER BY SUBSTRING(FieldName, -3,3);
示例:按字符串的前3个字符排序
SELECT * FROM TableName ORDER BY SUBSTRING(FieldName, 1,3);
注意:
Positive
位置/索引从左到右开始,Negative
位置/索引从字符串的右到左开始。
以下是SUBSTRING()功能的详细信息。