我想根据Substring对SQL查询返回的结果进行排序。我使用MYSQL作为DB。我正努力取得两种不同的结果
Sample data
aaa ad aa
aaa ab
aaa ac1)首先,我想根据第二个子字符串进行排序。
Result:
aaa ab
aaa ac
aaa ad aa第二,我想根据最后一个子字符串进行排序。
Result:
aaa ad aa
aaa ab
aaa ac我怎样才能完成这些任务。
非常感谢你的帮助。问候
编辑1:子字符串可以是任意长度的。对于第二种情况,我希望根据最后一个子字符串进行排序。这意味着它可以在任何位置。
发布于 2013-12-13 12:32:50
试试这个:
关于问题1:
SELECT * FROM tableA
ORDER BY SUBSTRING_INDEX(SUBSTRING_INDEX(colName, ' ', 2), ' ', -1);关于问题2:
SELECT * FROM tableA
ORDER BY SUBSTRING_INDEX(colName, ' ', -1);发布于 2013-12-13 12:33:19
一种方法是:-
SELECT SampleData, IF (LENGTH(SampleData) - LENGTH(REPLACE(SampleData, ' ', '')) >= 2, SUBSTRING_INDEX(SUBSTRING_INDEX(SampleData, ' ', 2), ' ', -1), NULL) AS OrderField
FROM SampleTable
ORDER BY OrderField检查该字段是否有足够的分隔符以获取相关部分。如果没有,则将排序字段设置为NULL,但如果足够长,则获取字段的这一部分。然后根据它分类。
这里的SQL小提琴:-
http://www.sqlfiddle.com/#!2/8cd01/8
得到最后一个字段更容易:-
SELECT SampleData, SUBSTRING_INDEX(SampleData, ' ', -1) AS OrderField
FROM SampleTable
ORDER BY OrderFieldhttps://stackoverflow.com/questions/20566181
复制相似问题