如何在表上搜索(可能还有全文索引搜索(地址数据,地址数据的结构如下:
address table
+----+------+--------+--------+--------+-------------+-------+----------+
| id | unit | number | street | type | town | state | postcode |
+----+------+--------+--------+--------+-------------+-------+----------+
| 0 | 2 | 12 | Smith | Street | Springfield | NSW | 1234 |
| 1 | 0 | 16 | Bob | Road | Faketown | VIC | 4321 |
+----+------+--------+--------+--------+-------------+-------+----------+
在搜索地址时,我想搜索整个地址。理想情况下,我希望能够像这样搜索表格:
SELECT * FROM addresses WHERE address LIKE "%12 Smith Street%"
感谢您提前帮助
在这种情况下,我强烈建议使用concat_ws()
而不是concat()
:
where concat_ws(' ', number, street, type, unit) like '%12 Smith Street%'
它不仅键入时间更短、不易出错,而且忽略了NULL
值。如果concat()
的任何值是NULL
,则整个结果是NULL
。
但是,对于多列全文搜索,应该考虑使用match()
。全文搜索为您提供了更大的搜索灵活性,尽管您需要小心停止词和短词。
您可以使用CONCAT函数从列中创建字符串。
select CONCAT(number, ' ', street, ' ', type) address
from address_table
where address like '%12 Smith Street%'
您没有说明address_table
中列的数据类型。您可能需要将数字列转换为字符串。