Sql 如何从表(zip、state、country)中的一组列中搜索地址?

Sql 如何从表(zip、state、country)中的一组列中搜索地址?,sql,mysql,Sql,Mysql,场景一:- 1) 用户在搜索字段中输入地址。地址可能是邮编、州或国家 2) 现在,我必须获取这个地址,它可能以任何顺序排列,也可能只包含国家、州或邮政编码,并检查数据库是否存在结果 关于这个话题的任何建议都会很棒这个怎么样 'SELECT * FROM table WHERE address LIKE \''. addslashes($search) .'\' OR zip = '. (int)$search .' OR country LIKE \''. addslashes($sea

场景一:- 1) 用户在搜索字段中输入地址。地址可能是邮编、州或国家

2) 现在,我必须获取这个地址,它可能以任何顺序排列,也可能只包含国家、州或邮政编码,并检查数据库是否存在结果

关于这个话题的任何建议都会很棒

这个怎么样

'SELECT * FROM table WHERE address LIKE \''. addslashes($search) .'\'
  OR zip = '. (int)$search .'
  OR country LIKE \''. addslashes($search) .'\''

我会这样做:

split address on space
将where子句构建为

WHERE zip||state||country like '%address_part_one%'
   OR zip||state||country like '%address_part_two%'
and so on ...
如果已为三个字段启用全文:

WHERE MATCH (zip,state,country) AGAINST ('address_part_one')
   OR MATCH (zip,state,country) AGAINST ('address_part_two')
...

我认为,一旦数据库积累了大量数据,这将是缓慢的。我们正在寻找类似全文搜索的解决方案我可以使用全文支持进行这种类型的搜索吗?可以在视图上启用全文搜索吗?我认为在MySQL中不可能在视图上创建索引。但也许我错了。看一下医生。