Rob*_*ldo 1 ruby regex activerecord ruby-on-rails
我找不到这个问题的答案,我真的把头撞在墙上试图解决这个问题,所以非常感谢任何帮助。
我有一张公司表,其中一家公司是“JPMorgan Chase Bank, NA”。
我想删除名称中的所有标点符号(因此“JPMorgan Chase Bank, NA”变为“JPMorgan Chase Bank NA”)
这是我最接近的:
Company.where("replace(name, '.', '') ILIKE ?", "JPMorgan Chase Bank, N A%")
=> [#<Company:0x00007ff8201f2b90 id: 25, name: "JPMorgan Chase Bank, N.A.", created_at: Mon, 31 May 2021 09:26:57 UTC +00:00, updated_at: Mon, 31 May 2021 09:26:57 UTC +00:00>]
Run Code Online (Sandbox Code Playgroud)
这有效,但它只删除了.(我为数据库中的字段保留了逗号)。我想删除所有标点符号,所以我尝试了以下方法:
Company.where("replace(name, '.,-:', ' ') ILIKE ?", "JPMorgan Chase Bank, N A%")
Company.where("replace(name, '[.,-:]', ' ') ILIKE ?", "JPMorgan Chase Bank, N A%")
Company.where("replace(name, /[^[:word:]\s]/, ' ') ILIKE ?", "JPMorgan Chase Bank, N A%")
Run Code Online (Sandbox Code Playgroud)
我似乎不知道如何用单个字符替换一系列字符
知道了!
Company.where("regexp_replace(name, '[[:punct:]]', '', 'g') ILIKE ?", "JPMorgan Chase Bank NA%")
Run Code Online (Sandbox Code Playgroud)
我需要使用regexp_replace并且需要添加g作为最后一个参数。
这是一个令人头疼的问题 - 我希望您已经找到了解决您问题的方法。