SQL查询,按子串排序

时间:2013-12-13 12:09:26

标签: mysql sql select sql-order-by substring

我想在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:子字符串可以是任意长度。 另外对于第二种情况,我想要在最后一个子串的基础上进行排序。这意味着它可以在任何位置..

2 个答案:

答案 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