首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将SQL结果按顺序排序?

如何将SQL结果按顺序排序?
EN

Stack Overflow用户
提问于 2017-08-17 17:52:17
回答 2查看 46关注 0票数 0

MSAccess 2007 SQL

我正在为表列中的值编写一个用户搜索下拉列表。

如果用户在字段中键入'xyz‘,我希望找到搜索列开始的所有行--或者包含'xyz’。但是,我希望列以'xyz‘开头的行先排序,然后是列包含'xyz’的行。我知道如何在通配符中使用LIKE子句来查找所需的行,问题是如何按以下顺序返回结果集。

例如,如果我的搜索列包含:

  • abcxyz
  • mno
  • 氧扎布
  • 木糖
  • 2氧
  • abcxyzruf氧
  • zxyz

我希望查询按以下顺序返回列包含“xyz”的所有行:

  • 氧扎布
  • 木糖
  • 2氧
  • abcxyz
  • abcxyzruf氧
  • zxyz

在MSaccess 2007中,使用SQL实现这一目的的最佳、最有效、唯一的方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2017-08-17 17:57:08

您可以使用instr()

代码语言:javascript
复制
order by instr(col, "xyz")

注意:这假设所有字符串中都有"xyz"。否则,非比赛将(不直观地)排在第一。但是,对于示例数据,所有的值都有"xyz"

编辑:

关于您的修订本:

代码语言:javascript
复制
order by iif(col like "xyz*", 1, 2), col
票数 3
EN

Stack Overflow用户

发布于 2017-08-17 18:11:36

戈登的回答让我走上了正轨。

代码语言:javascript
复制
Order By iif(instr(col, 'xyz')=1, instr(col, 'xyz'), col), col

就这样!非常感谢戈登。按顺序排列的第二个col强制开始与子组也按字母顺序排序.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45741958

复制
相关文章

相似问题

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