mysql - LIKE 语句未在查询中找到全部

标签 mysql sql

我有一个像这样的语句:

AND ( CONCAT( arc_property_res.STREET_NUM, ' ', arc_property_res.STREET_NAME ) LIKE '%{$address}%'

NUMNAME 在不同的列中。目前,如果我有一个输入字段并输入: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}')

在某些情况下,我输入的地址不会最先出现。请注意那里有正确的列表,只是不是第一个。

例子:

enter image description here

有什么想法吗?

最佳答案

好吧,很难说出您在 STREET_NUM 和 STREET_NAME 中到底有什么,但如果它适用于 000Street Dr 让我们假设这就是我们的值(value)观。

现在我们知道

'000' + ' ' + 'Street Dr' LIKE '%000 Street Dr%' 有效。

为什么它适用于:

'000' + ' ' + 'Street Dr' LIKE '%000 Street Drive%' ?我认为不应该。

这就是 LIKE 运算符的工作原理。

要解决此问题,您需要在数据库中使用街道、车道、封闭区等的全名,而不是 Dr., St., Cl。

关于mysql - LIKE 语句未在查询中找到全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14815434/

相关文章:

MYSQL 提取值

sql - C# 访问和显示表中数据的方法

mysql - 如果我们通过代码管理唯一性和自动增量,为什么要使用主键?

mysql - 想在 SQL 列中使用数学,但它不是 INT

php - 排名不重复

mysql - Select join 语句不起作用

sql - 比较两个列表项

php - 强制表格显示 5 行(有或没有数据)

Mysql 议程表的最佳索引

java - 在 SQL 表中设置日期格式 dd/mm/yyyy