在SQL Server中替换/重命名/修改JSON密钥

时间:2017-03-02 04:57:53

标签: sql-server json

我有一个名为属性的列,其中包含一个JSON blob。此blob可以在单行中包含单个和多个key:值。

以下是3行简化样本数据:

{"68c4":["yes"],  "c8ew":["0","1"],  "p6i4":["London","Frankfurt","Tokyo"]}
{"472h":["USD"],  "c8ew":["-1","9"],  "p6i4":["New York"]}
{"472h":["EUR","JPY"]}

密钥是UUID,我需要用人类可读的组件替换它们

我知道我可以这样写:

SELECT JSON_MODIFY(attributes, '$."p6i4"', 'City') AS modified

但这改变了价值。我的问题是我需要更改密钥。有谁知道怎么做?

1 个答案:

答案 0 :(得分:2)

您可以使用旧密钥的值/片段插入新密钥并删除旧密钥:值。

此代码将使用“p6i4”中的值添加新的“City”键:

width

请注意,您需要使用JSON_QUERY,因为您有数组值。 如果在将其复制到另一个键后在旧键中设置NULL值,JSON_MODIFY将删除它:

house