0

我在包含数组类型 key 的表列中有 json 对象roles。我正在尝试替换roles值,但它是替换现有角色,添加新的内部角色。这是db fiddler

当前结果:

{
  "roles": {"roles":[{....}]}
 }

预期结果:

{
  "roles":[{....}]
}

任何帮助都会得到帮助。谢谢。

4

2 回答 2

0

我最初回答的重点是完全重建 JSON,这就是我添加, ROOT ('roles').

所以你不需要使用JSON_MODIFY,只需替换整个列。

或者,例如,如果您有 JSON 的其他部分,则可以删除, ROOT ('roles')并保留JSON_MODIFY

于 2021-07-26T11:35:22.980 回答
0

查询看起来正确,但将对象{roles:[]}作为输入JSON_QUERY(j.newJson) 而不是数组[]值传递。

您可以使用JSON_QUERY路径修改输入或从输入中提取数组值以获得预期结果。

JSON_MODIFY(fs1.[Schema],'$.roles',JSON_QUERY(j.newJson)) as [Schema]

添加JSON_QUERY 路径后

JSON_MODIFY(fs1.[Schema],'$.roles',JSON_QUERY(j.newJson,'$.roles')) as [Schema]

有关更多详细信息,请参阅文档JSON_QUERY (Transact-SQL)

于 2021-07-26T06:36:59.407 回答