我有一张这样的顾客桌
id | city | street | street number
1 | Berlin | Bahnhofstraße | 5
2 | New York | Main street | 22
3 | Frankfurt | Bahnhofstraße | 11
4 | London | Bond Street | 63
我做了一个简单的html输入,用jquery获取值,用 AJAX 执行一个简单的搜索。
因此,当我搜索“Bahnh”时,我会触发SQL查询
SELECT * FROM `customers` WHERE `street ` LIKE '%Bahnh%' OR city LIKE '%"Bahnh"%'
我得到了id 1和3
但是有没有办法在查询中添加街道号码?就像当我搜索“Bahnhof 11”时,我只得到id 3?
3条答案
按热度按时间eimct9ow1#
添加条件
第一个
fv2wmkja2#
据我所知,您有一个地址搜索字段,用户可以在其中键入街道名称和街道编号。您可以在这两列上创建全文搜索索引:
阅读有关全文搜索的更多信息:https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html
然后,您必须通过在每个单词上添加+和 * 来操作要搜索的字符串。最终的SQL应该如下所示:
+
意味着每个单词都是必需的,*
是通配符,类似于LIKE查询中的%
。**一个警告:*你不能用这个SQL在字符串中搜索,只能搜索以Bahnh 开头的字符串-但是它可以解决你在搜索“11 Bahnh”或“Bahnh 11”等方面的问题。
7gcisfzg3#
只需在
WHERE
子句中添加另一个条件: