mysql搜索街道和街道号码

mec1mxoz  于 2022-11-21  发布在  Mysql
关注(0)|答案(3)|浏览(190)

我有一张这样的顾客桌

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?

eimct9ow

eimct9ow1#

添加条件
第一个

fv2wmkja

fv2wmkja2#

据我所知,您有一个地址搜索字段,用户可以在其中键入街道名称和街道编号。您可以在这两列上创建全文搜索索引:

ALTER TABLE customers 
ADD FULLTEXT INDEX fulltext(street, street_number);

阅读有关全文搜索的更多信息:https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html
然后,您必须通过在每个单词上添加+和 * 来操作要搜索的字符串。最终的SQL应该如下所示:

SELECT * 
FROM streets 
WHERE MATCH (street, number) AGAINST ('+Bahnh* +11*' IN BOOLEAN MODE);

+意味着每个单词都是必需的,*是通配符,类似于LIKE查询中的%

**一个警告:*你不能用这个SQL在字符串中搜索,只能搜索以Bahnh 开头的字符串-但是它可以解决你在搜索“11 Bahnh”或“Bahnh 11”等方面的问题。

7gcisfzg

7gcisfzg3#

只需在WHERE子句中添加另一个条件:

SELECT *
FROM customers
WHERE street LIKE 'Bahnh%' AND street_number = 11;

相关问题