【问题标题】:LIKE with word boundary and wildcard in SQL or AREL在 SQL 或 AREL 中带有单词边界和通配符的 LIKE
【发布时间】:2014-03-24 02:06:25
【问题描述】:

如何创建一个 arel 查询,甚至是直接的 sql 查询,它在字符串中返回一个搜索词,但仅当该词是单个词(而不是另一个词的一部分)时。

如下所示,我尝试使用LIKE 进行搜索,[[:<:]] [[:>:]] 设置单词边界,并将% 作为字符串其余部分的通配符...虽然这不是工作。

Post.where("title LIKE :keyword", {keyword: "%[[:<:]]#{keyword}[[:>:]]%"})

作为参考,我使用的是 ruby​​ 2.1,rails 4。

【问题讨论】:

    标签: sql ruby-on-rails-4 arel


    【解决方案1】:

    单词边界是正则表达式的一部分,SQL 默认没有。您需要添加正则表达式支持才能执行您想要执行的操作(有关详细信息,请参阅How do I use regex in a SQLite query?)。

    此外,要在添加支持后使用正则表达式,请将“LIKE”替换为“REGEXP” - 不要将“LIKE”与正则表达式一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 2011-03-09
      • 2012-12-15
      相关资源
      最近更新 更多