【发布时间】:2013-02-11 15:37:51
【问题描述】:
我有一个类似这样的声明:
AND ( CONCAT( arc_property_res.STREET_NUM, ' ', arc_property_res.STREET_NAME ) LIKE '%{$address}%'
NUM 和 NAME 位于不同的列中。目前,如果我有一个输入字段并输入,则此查询有效:000 Street Dr 但是一旦我尝试这样做:000 Street Drive 我得到 0 个结果。 Rd、Blvd、Pk 和其他一些地方也会发生同样的情况。
我尝试只使用一个通配符%,但仍然没有找到任何东西。感谢您提供任何帮助或想法。
更新
我将表格转换为使用 MyISAM,以便可以使用全文搜索。所以现在所有匹配的查询都有效,即:Dr、Drive、Rd、Road 等......
我的查询现在看起来像这样:
AND ( MATCH(arc_property_res.STREET_NUM, arc_property_res.STREET_NAME) AGAINST('{$address}')
在某些情况下,我输入的地址不会先出现。请注意正确的列表在那里,它不是第一个。
例子:
有什么想法吗?
【问题讨论】:
-
你能发布一些示例数据吗?你期望结果是什么
-
嗯,这里的第一部分是关于 % 通配符 (techonthenet.com/sql/like.php).. 无论如何,使用
_会中断查询。一旦我将它们分开( num 和 name ),查询就不起作用了。 -
@Razh 我希望输出找到所有街道名称,包括 Dr、Drive、Rd、Road。如果我在搜索中仅使用
Dr,则会出现此结果:cl.ly/image/0T1A1V190343,但如果我要搜索与3033 Old Stone Drive相同的地址,则不会出现任何结果。 -
一个选项是尝试从 '%{$address}%' 中取出前面的 '%' 这样它看起来像 '{$address}%' 然后如果你输入 3033 old stone 它应该根据数据库中的内容返回旧石 Dr 或 Drive。我不得不说如果它们存在于数据库中,它也会在同一搜索中返回 3033 old stone Rd 或 Road
-
请删除您问题的更新并将其添加为下面的答案。这将有助于未来的访问者。