我想在Substring的基础上对从SQL查询返回的结果进行排序。我使用MYSQL作为DB。我试图取得两个不同的结果
Sample data
aaa ad aa
aaa ab
aaa ac
1)首先,我想在第二个子串的基础上进行排序。
Result:
aaa ab
aaa ac
aaa ad aa
2)其次我想根据最后一个子串进行排序。
Result:
aaa ad aa
aaa ab
aaa ac
我如何实现这些任务。
非常感谢您的帮助.. 此致
编辑1:子字符串可以是任意长度。 另外对于第二种情况,我想要在最后一个子串的基础上进行排序。这意味着它可以在任何位置..
答案 0 :(得分:2)
试试这个:
问题1:
SELECT * FROM tableA
ORDER BY SUBSTRING_INDEX(SUBSTRING_INDEX(colName, ' ', 2), ' ', -1);
问题2:
SELECT * FROM tableA
ORDER BY SUBSTRING_INDEX(colName, ' ', -1);
答案 1 :(得分:0)
一种方法: -
SELECT SampleData, IF (LENGTH(SampleData) - LENGTH(REPLACE(SampleData, ' ', '')) >= 2, SUBSTRING_INDEX(SUBSTRING_INDEX(SampleData, ' ', 2), ' ', -1), NULL) AS OrderField
FROM SampleTable
ORDER BY OrderField
检查该字段是否有足够的分隔符来获取相关部分。如果没有将sort字段设置为NULL,但如果长度足够抓住该字段的那一部分。然后SORT基于它。
SQL小提琴: -
http://www.sqlfiddle.com/#!2/8cd01/8
让最后一个字段更容易: -
SELECT SampleData, SUBSTRING_INDEX(SampleData, ' ', -1) AS OrderField
FROM SampleTable
ORDER BY OrderField