sql - 从 PostgreSQL 表中的数组中删除 # 个字符?

标签 sql arrays postgresql

我在一个表中有一个名为“directedlink_href”的字段(类型为字符变化),其中包含的数组的值都以“#”字符开头。

如何从该字段中这些数组的任何条目中删除“#”字符?

例如...

{#osgb4000000030451486,#osgb4000000030451491}

{osgb4000000030451486,osgb4000000030451491}

最佳答案

干净的解决方案是取消嵌套、替换然后重新聚合值:

select id, 
       (select array_agg(substr(x.val,2) order by x.idx) from unnest(t1.directedlink_href) with ordinality as x(val,idx)) as data
from the_table t1;

如果你真的想改变表中的数据:

update the_table t1
  set directedlink_href = (select array_agg(substr(x.val,2) order by x.idx) from unnest(t1.directedlink_href) with ordinality as x(val,idx));

这只是去掉了第一个字符。如果值的开头可能有其他字符,则需要使用 regexp_replace(x.val,'^#', '') 而不是 substr(x.val, 2)

关于sql - 从 PostgreSQL 表中的数组中删除 # 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40469491/

相关文章:

sql - 如何列出 SQL Server 表的主键?

结构体中的 char 数组成员 - 值复制到两个成员

java - 在线性时间内找到未排序数组的中位数?

database - Erlang:2 个网络服务器上的 2 个数据库?

sql - 从 pgadmin 导出查询结果到 excel 文件

mysql - SQL - 排序依据然后分组依据

mysql - 如何将字符串添加到 MySQL 中的字段值?

javascript - JS : Remove duplicated values from specific string in array

database - 替代 VBScript 中的 sendkeys

mysql - LAST_INSERTED_ID 的安全性