gpt4 book ai didi

sql - 我如何在 PostgreSQL 中使用正则表达式来删除字段匹配模式的结尾?

转载 作者:行者123 更新时间:2023-11-29 13:02:26 28 4
gpt4 key购买 nike

如何简化这个 PostgreSQL?基本上我想检查字段是否以(1) 或只是 (1) 并替换并重复 1-30 的数字。我认为它可以以某种方式使用正则表达式来完成,但我还没有让它工作。

UPDATE discogs.artist_meta
SET name = substr(name,0, strpos(name,' (1)'))
WHERE name LIKE '% (1)';

UPDATE discogs.artist_meta
SET name = substr(name,0, strpos(name,'(1)'))
WHERE name LIKE '%(1)';


UPDATE discogs.artist_meta
SET name = substr(name,0, strpos(name,' (2)'))
WHERE name LIKE '% (2)';

UPDATE discogs.artist_meta
SET name = substr(name,0, strpos(name,'(2)'))
WHERE name LIKE '%(2)';

最佳答案

  1. 使用regexp_replace(target, regexp, replacewith) function
  2. 您的模式类似于 ' ?\(([1-9]|[12][0-9]|30)\)$'
  3. 我不太确定您要替换什么...只是删除号码?如果是,请替换为 ''

正则解释:

" ?"                 = optional space
\( = opening parenthesis (escaped)
([1-9]|[12][0-9]|30) = numbers 1-30
\) = closing parenthesis (escaped)
$ = end of content

关于您的评论:

update discogs.artist_meta
set name = regexp_replace(name, ' ?\(([1-9]|[12][0-9]|30)\)$', '')
where name ~ ' ?\(([1-9]|[12][0-9]|30)\)$'

关于sql - 我如何在 PostgreSQL 中使用正则表达式来删除字段匹配模式的结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490567/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com