首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询,对子字符串进行排序

问SQL查询,对子字符串进行排序
EN

Stack Overflow用户
提问于 2013-12-13 12:09:26
回答 2查看 3.7K关注 0票数 1

我想根据Substring对SQL查询返回的结果进行排序。我使用MYSQL作为DB。我正努力取得两种不同的结果

代码语言:javascript
复制
Sample data
aaa ad aa
aaa ab
aaa ac

1)首先,我想根据第二个子字符串进行排序。

代码语言:javascript
复制
Result:
aaa ab
aaa ac
aaa ad aa

第二,我想根据最后一个子字符串进行排序。

代码语言:javascript
复制
Result:
aaa ad aa
aaa ab
aaa ac

我怎样才能完成这些任务。

非常感谢你的帮助。问候

编辑1:子字符串可以是任意长度的。对于第二种情况,我希望根据最后一个子字符串进行排序。这意味着它可以在任何位置。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-13 12:32:50

试试这个:

关于问题1:

代码语言:javascript
复制
SELECT * FROM tableA
ORDER BY SUBSTRING_INDEX(SUBSTRING_INDEX(colName, ' ', 2), ' ', -1);

关于问题2:

代码语言:javascript
复制
SELECT * FROM tableA
ORDER BY SUBSTRING_INDEX(colName, ' ', -1);
票数 2
EN

Stack Overflow用户

发布于 2013-12-13 12:33:19

一种方法是:-

代码语言:javascript
复制
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

得到最后一个字段更容易:-

代码语言:javascript
复制
SELECT SampleData, SUBSTRING_INDEX(SampleData, ' ', -1) AS OrderField
FROM SampleTable
ORDER BY OrderField
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20566181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档