MySql自动完成查询 - 超过一个单词

时间:2018-02-08 13:51:51

标签: php mysql

您好我想知道当我只键入一个时,是否有一种方法可以匹配多个单词。 让我解释。所以这是我刚刚输入的查询:

SELECT* 
FROM 
    rc_orders o
WHERE
    o.custCity 
LIKE 
    'sof%' 

这样就会从表格中选择以“sof”开头的所有城市。例如“索菲亚”。或者,如果我输入“新”,它将匹配以“新”开头的城市 - > “纽约”,“新泽西”等 但让我解释看看我在说什么。如果我输入“york”,我希望自动完成功能显示“纽约”。或者如果我输入“jersey”,我希望查询匹配“new jersey”等等。 提前谢谢!

3 个答案:

答案 0 :(得分:2)

您可以在where子句中尝试使用regexp,例如

select * from `rc_orders` o where o.`custcity` regexp 'york';

答案 1 :(得分:0)

这应该有效。如果您在字符串的开头添加%,它将作为前通配符工作,返回与所有匹配的结果,而不仅仅是开头。

SELECT * FROM rc_orders o WHERE o.custCity LIKE '%sof%'

此链接包含有关模式匹配的更多信息,包括其他选项(如另一个答案中提到的regexp)供您使用。

https://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html

答案 2 :(得分:0)

一个解决方案是搜索包含第二个单词(例如泽西岛)的custCity字段,该字段将返回整个城市。这是第一个回归的解决方案。

SELECT TOP 1 o.cusstCity FROM rc_orders o WHERE o.custCity LIKE '%jersey%'

应该返回新球衣

我假设两个城市没有相同的第二个字,如果不是,你需要进行不同的搜索。