如何在 Redshift 中替换 JSON 中的值?

Posted

技术标签:

【中文标题】如何在 Redshift 中替换 JSON 中的值?【英文标题】:How can I replace values in JSON in Redshift? 【发布时间】:2020-11-26 13:32:02 【问题描述】:

我有一列包含 JSON 格式的地址信息。我想用“--”替换街道名称和门牌号。

这是我的专栏的样子:

"1": "house_no":1, "street_name":"street1",  "2": "house_no":2, "street_name":"street2"

所以我的专栏应该是这样的:

 "1": "house_no":"--", "street_name":"--",  "2": "house_no":"--", "street_name":"--"

在 Redshift 中,JSON 存储为 VARCHAR 列,所以我的假设是需要 regexp 函数。

【问题讨论】:

【参考方案1】:

你可以使用regexp_replace():

regexp_replace(regexp_replace(col, '"house_no":[^,]+', '"house_no":"--"'), '"street_name":"[^"]+"', '"street_name":"--"')

在 Redshift 中,这应该替换所有出现的情况。在大多数其他数据库中,您需要 1, 1, 'g' 进行全局替换。

【讨论】:

以上是关于如何在 Redshift 中替换 JSON 中的值?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Glue - Redshift 中具有 Json 结构的字段

如何在 Redshift 中检索括号表达式中的值?

如何在 Play 中替换 JSON 值

如何知道 Redshift 查询返回的值的类型?

替换 JSON 对象中的值

从 Redshift 表中获取 JSON 数据