【问题标题】:SQL Select Query (extended)SQL 选择查询(扩展)
【发布时间】:2017-05-08 11:28:15
【问题描述】:

我正在寻找一个合适的 SQL 查询,它允许我执行以下操作:

  • 在数据库中,我有一篇包含“税”字的文章
  • 如果我使用查询SELECT * FROM 'table' WHERE content LIKE '%tax%' 它会找到我的文章
  • 但是,如果我搜索“进口税”,它什么也找不到

是否有什么我忽略的东西即使使用这个“扩展”搜索词组仍然可以返回我的文章?

谢谢你, 伊万娜

【问题讨论】:

  • 添加一些示例表数据和预期结果 - 以及格式化文本。
  • 您的文章是否包含子字符串“进口税”?你确定它只是进口和税收之间的一个空格吗?
  • 或隐藏字符
  • 我有一个搜索输入,您输入的任何内容都将用于完成搜索查询。最终查询的结构是“SELECT * FROM 'table' WHERE content LIKE '%inserted value here%'”。问题是查询将整个输入作为固定值并将其与表“表”的内容进行比较。如果此输入(准确的形式 - “进口税”)不存在,它将不返回任何内容。但是,如果分成更小的实体,就会找到“税”这个词。

标签: mysql sql select search


【解决方案1】:

如果要搜索多个值,可以使用正则表达式:

SELECT *
FROM `table`
WHERE content REGEXP 'import|tax'

这会搜索同时包含“import”和“tax”的内容。

我还建议您查看全文索引。但是,请注意,因为“tax”包含三个字符,并且使用默认设置可能不够长,无法将其纳入全文索引。

【讨论】:

    【解决方案2】:

    你必须使用我的基于 sql 文本的搜索作为

    SELECT * FROM `table` WHERE MATCH (content) AGAINST ('your_search_text' IN NATURAL LANGUAGE MODE);
    

    你可以在这里查看mysql full text search

    【讨论】:

      【解决方案3】:

      最简单的方法是使用另一个类似的方法:

      SELECT * FROM 'table' 
      WHERE content LIKE '%tax%' AND content LIKE '%import%';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-28
        • 2013-01-28
        相关资源
        最近更新 更多