【问题标题】:Selecting rows with more than 1 LIKE选择超过 1 个 LIKE 的行
【发布时间】:2015-08-15 04:52:15
【问题描述】:

我的问题是,我想创建一个简单的搜索引擎。 我已经通过使用 2 个查询让它工作了。第一个搜索完整的搜索词,第二个逐字搜索所有匹配项。 例如,如果您搜索"The long lasting i don't know",那么它将搜索"The long lasting i don't know",然后搜索"The",然后搜索"long",以此类推。

但我想使用分页,它会弄乱结果,所以我需要在 1 个查询中使用它。 使用IN 操作符可以实现吗?

【问题讨论】:

  • 您是否在列上使用全文索引?
  • 也许我没有得到你想要的,但我认为这类似于这个问题:stackoverflow.com/questions/4172195/mysql-like-multiple-values ?
  • @Rowland Shaw 不,我应该使用它吗?
  • @KioCoan 是的,类似的。但是我可以像这样使用 in 运算符:IN (%somequery1%, %somequery2%, %somequery3%, %somequery4% ...)?
  • 我强烈建议在列上使用全文索引,并使用full text search functions,而不是尝试在客户端代码中重新实现自己。

标签: mysql search sql-like


【解决方案1】:

您必须按如下方式将个人 like 与 OR 一起使用

select * from tablename where field like "%The long lasting i don't know%" or field like "%The%" or field like "%long%" or field like "%lasting%" or field like "%i%" or field like "%don't%" or field like "%know%"

参考此链接Using SQL LIKE and IN together

【讨论】:

    【解决方案2】:

    我的答案在性能方面可能不是最佳的,但这是我的想法。

    您只能逐字搜索(如 '%The%' 的列或 '%long% 等的列)。你肯定会得到包含整个句子的结果。

    然后,您可以订购它与一个案例

    Order By Case When Column Like "The long lasting i don't know%" Then 1 Other 2 End
    

    【讨论】:

      【解决方案3】:

      您可以尝试使用 @jazkat 在Mysql Like multiple values 所说的 REGEXP

      您的查询将是:

      SELECT * FROM table WHERE column REGEXP "The long lasting i don't know|The|long|lasting|i|don't|know"
      

      更多关于 REGEXP 的信息在这里:http://www.tutorialspoint.com/mysql/mysql-regexps.htm

      【讨论】:

      • 这个解决方案似乎是解决我的问题的最有效方法。谢谢。
      猜你喜欢
      • 2013-10-22
      • 2022-12-01
      • 2011-07-03
      • 2016-09-02
      • 2017-08-30
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      相关资源
      最近更新 更多