【问题标题】:ruby on rails, meta_search and case insensitive oracleruby on rails、meta_search 和不区分大小写的 oracle
【发布时间】:2012-07-06 09:46:48
【问题描述】:

我在我的 rails 项目中使用 meta_search gem。该数据库是 Oracle 数据库,“like”区分大小写。有人知道我如何为获取这样的查询创建新条件或其他内容:

UPPER(NAME) LIKE UPPER('User Firstname')

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 oracle case-sensitive meta-search


    【解决方案1】:

    以防万一有人需要洗劫:

    ransacker :subject_cs, :formatter => proc {|v| v.downcase }, :splat_param => true, :type => :string do
        arel_table[:subject].lower
    end
    

    【讨论】:

    • 刚刚用 rism 的 oracle-enhanced gem、Rails 4、oracle 9i 试了一下,效果很好!就我而言,name_cs_cont 生成的 sql 包括 WHERE ((LOWER("FOOTBALL_PLAYER"."FIRST_NAME") LIKE '%brady%'
    • 这就是它应该做的,很高兴我能帮上忙
    【解决方案2】:

    meta_search method class - 前两个代码示例。只需将 :backwards_name 重写为 :incasesensitive_name 或您想要的任何内容,然后将此类文本字段添加到您的搜索表单。

    UPPER() 内置在 Oracle AFAIR 中,因此范围可能如下所示:

    scope :incasesensitive_name, lambda {|name| where('UPPER(name) LIKE ?', "%#{name.upcase}%")}
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-17
      • 2013-03-06
      • 2020-02-18
      • 1970-01-01
      相关资源
      最近更新 更多