MSAccess 2007 SQL
我正在为表列中的值编写一个用户搜索下拉列表。
如果用户在字段中键入'xyz‘,我希望找到搜索列开始的所有行--或者包含'xyz’。但是,我希望列以'xyz‘开头的行先排序,然后是列包含'xyz’的行。我知道如何在通配符中使用LIKE子句来查找所需的行,问题是如何按以下顺序返回结果集。
例如,如果我的搜索列包含:
我希望查询按以下顺序返回列包含“xyz”的所有行:
在MSaccess 2007中,使用SQL实现这一目的的最佳、最有效、唯一的方法是什么?
发布于 2017-08-17 17:57:08
您可以使用instr()
order by instr(col, "xyz")注意:这假设所有字符串中都有"xyz"。否则,非比赛将(不直观地)排在第一。但是,对于示例数据,所有的值都有"xyz"。
编辑:
关于您的修订本:
order by iif(col like "xyz*", 1, 2), col发布于 2017-08-17 18:11:36
戈登的回答让我走上了正轨。
Order By iif(instr(col, 'xyz')=1, instr(col, 'xyz'), col), col就这样!非常感谢戈登。按顺序排列的第二个col强制开始与子组也按字母顺序排序.
https://stackoverflow.com/questions/45741958
复制相似问题