gpt4 book ai didi

sql - 在 postgres 的数组列上使用 regexp_replace

转载 作者:行者123 更新时间:2023-11-29 11:42:54 25 4
gpt4 key购买 nike

我正在尝试使用正则表达式更新数组列的每个元素中出现的所有值。

如果该列不是 text[] 类型,而是 text 我将使用此查询来更新:

UPDATE my_table
SET my_column = regexp_replace(
my_column, 'foo(\d+)', 'bar\1', 'g'
)

如何替换数组列中的每个元素?

最佳答案

据我所知最简单的方法:

UPDATE my_table SET
my_column = array(
SELECT regexp_replace(unnest(my_column), 'foo(\d+)', 'bar\1', 'g'))

PostgreSQL 太聪明了。可以使用 SRF(设置返回函数,只需谷歌搜索)作为其他函数的参数。例如:

select abs(unnest('{1,-2,3}'::int[]));

同理

select abs(x) from unnest('{1,-2,3}'::int[]) as x;

但更短。

它回来了

┌─────┐│ abs │╞═════╡│   1 ││   2 ││   3 │└─────┘

array(select ...) 只是将 select... 结果转换为数组的数组构造函数。

关于sql - 在 postgres 的数组列上使用 regexp_replace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35817418/

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