MSAccess 2007 SQL
我正在为表格列中的值编写用户搜索下拉列表。
如果用户键入' xyz'在该字段中,我想查找搜索列所在的所有行 - 或包含' xyz'。但是我想要那些列以' xyz'开头的行。首先排序,然后是那些列包含' xyz'的行。我知道如何使用带有通配符的LIKE子句来查找所需的行,问题是如何获得按以下顺序返回的结果集。
例如,如果我的搜索列包含:
我希望查询返回列包含' xyz'的所有行。按此顺序:
在MSaccess 2007中使用SQL实现这一目标的最佳,最有效,唯一的方法是什么?
答案 0 :(得分:3)
您可以使用instr()
:
order by instr(col, "xyz")
注意:这假定所有字符串中都包含"xyz"
。如果不是,那么不匹配将(非直观地)首先出现。但是,对于您的示例数据,所有值都有"xyz"
。
编辑:
对于您的修订版本:
order by iif(col like "xyz*", 1, 2), col
答案 1 :(得分:0)
Order By iif(instr(col, 'xyz')=1, instr(col, 'xyz'), col), col
就是这样!!!非常感谢戈登。 Order By的第二个col强制start-with子组也按字母顺序排序。