ruby-on-rails - 在使用正则表达式查询之前从 Postgres DB 中的字段中删除标点符号
问题描述
我找不到这个问题的答案,我真的很想解决这个问题,所以非常感谢任何帮助。
我有一张公司表,其中一家公司是“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>]
这有效,但它只删除.
(我已将逗号留在数据库中的字段中)。我想删除所有标点符号,所以我尝试了以下操作:
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%")
我似乎不知道如何用单个字符替换一系列字符
解决方案
知道了!
Company.where("regexp_replace(name, '[[:punct:]]', '', 'g') ILIKE ?", "JPMorgan Chase Bank NA%")
我需要使用regexp_replace
,并且需要将其添加g
为最后一个参数。
那是一个令人头疼的问题-我希望您已经找到了解决问题的方法。
推荐阅读
- android - 使用 Node Js 将 Postgresql 链接到 Android Studio
- react-native - 如何在 .map 上的多行上呈现我的文本?
- yocto - 无法获取源文件
- azure - Azure 数据工厂管道并发问题
- python - 从谷歌地图距离矩阵 API 检索历史数据?
- html - 如何选择所有嵌套段落?
- reactjs - React - 内容变得可见后重新渲染
- json - 通过 api 调用部署预定义数据的最佳方式是什么?
- java - MicroProfile Metrics 不显示 Wildfly 25 上的自定义指标
- android - android:noHistory="true" 或设置标志在可穿戴应用程序中不起作用