【问题标题】:mysql LIKE = imprecise searchmysql LIKE = 不精确搜索
【发布时间】:2011-05-13 21:30:11
【问题描述】:

我正在使用一个简单的查询来进行搜索:

SELECT * FROM table WHERE field LIKE '%term%'

如果我有一个字段 =“公司名称 123”,我搜索公司 123,结果为空

我该如何改进呢?它只查找术语是否按顺序排列

【问题讨论】:

标签: php mysql search sql-like


【解决方案1】:

用 % 替换空格

$newTerm = str_replace(' ', '%', $term);
$sql = "SELECT * FROM table WHERE field LIKE '%$term%'"

$r = mysql_qery($sql, $conn);

【讨论】:

  • 不是这里的问题,你应该先阅读问题(但你是对的,问题中的代码不起作用,但我确定那只是一个错字)。 编辑:brain_damage 已更正问题中的代码
  • 自从我第一次发布以来,他编辑了问题,我改变了它
  • 我更喜欢concat('%', $term, '%')(检查这里的 PHP 语法),以确保不会遭受 SQL 注入的影响。
【解决方案2】:

您需要在 Company 和 123 之间添加一个 % 以使其匹配。您可能想查看全文搜索功能。

【讨论】:

    【解决方案3】:

    尝试替换空格
    $searchtext =str_replace(' ','%',$searchtext);

    【讨论】:

      【解决方案4】:

      你可以:

      • 将您的搜索词拆分为单词,并从中构建一个包含大量 AND(或 OR,如果您只想找到其中一个部分)的查询(丑陋,但我已经看过很多次了)李>
      • 用 %(这是一个通配符)在您的术语(要走的路)中替换 ' '(空格)

      【讨论】:

        猜你喜欢
        • 2011-08-10
        • 1970-01-01
        • 2013-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-03
        • 2011-10-04
        相关资源
        最近更新 更多