替换/重命名/修改SQL Server中的JSON密钥
问题描述:
我有一个名为属性的列,其中包含一个JSON blob。该blob可以在单个行中具有单个和多个键:值。替换/重命名/修改SQL Server中的JSON密钥
下面是简化样本数据的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
但是这改变了价值。我的问题是我需要改变关键。有谁知道如何做到这一点?
答
您可以使用旧密钥的值/片段插入新密钥并删除旧密钥:值。
此代码将增加新的“城市”键与“p6i4”的值:
SELECT JSON_MODIFY(attributes, '$.City', JSON_QUERY(attributes, '$.p6i4'))
请注意,你需要使用JSON_QUERY因为你有数组值。 如果设置在旧钥匙你在另一个密钥复制后,NULL值,JSON_MODIFY将其删除:
SELECT JSON_MODIFY(
JSON_MODIFY(attributes, '$.City', JSON_QUERY(attributes, '$.p6i4')),
'$.p6i4', NULL)
+0
这很好用,谢谢关于将值设置为NULL以删除一个键的提示! – onji
我删除了Postgres的标签为'JSON_MODIFY()'是一个SQL Server功能。 –
ahh对不起。由于这些数据来自Postgres jsonb,所以我将它留在那里,但可能与解决方案中的SQL Server不太相关。 – onji
您可以在PostgreSQL端修改数据吗? –