小编lan*_*uni的帖子

如何根据字段中的字符串位置优先选择LIKE查询?

我试图在表中查询有限的结果集,以便在javascript中填充自动完成字段.因此,我使用LIKE运算符输入了部分字符串.

例如,如果我有一个表,例如:

tblPlaces
id     country
1      Balanca
2      Cameroon
3      Canada
4      Cape Verde
5      Denmark
Run Code Online (Sandbox Code Playgroud)

为了这个例子,让我们说我想要返回两行 - 是的,对于这个例子,我在那里组建了一个国家;)我想优先考虑在国家开头匹配部分字符串的任何实例.我开始使用的查询是:

SELECT id, country FROM tblPlaces WHERE country LIKE 'ca%' LIMIT 2
Run Code Online (Sandbox Code Playgroud)

这按预期返回"喀麦隆"和"加拿大".但是,如果没有两个名称在一个单词的开头匹配字符串(例如'de'),我希望它在单词的其他地方查找.所以我修改了查询成为

SELECT id, country FROM tblPlaces WHERE country LIKE '%ca%' LIMIT 2
Run Code Online (Sandbox Code Playgroud)

然后返回'佛得角'和'丹麦',但这样做打破了我原来的'ca'搜索,现在返回'Balanca'和'喀麦隆'.

所以,我的问题是,如何使用单个查询来优先处理单词开头的匹配(也许我需要使用REGEXP?)我还假设如果'country'列被索引,这些比赛将至少以随后的字母顺序返回(即加拿大之前的喀麦隆等).

mysql sql sql-like

6
推荐指数
1
解决办法
1787
查看次数

标签 统计

mysql ×1

sql ×1

sql-like ×1