我在包含数组类型 key 的表列中有 json 对象roles
。我正在尝试替换roles
值,但它是替换现有角色,添加新的内部角色。这是db fiddler。
当前结果:
{
"roles": {"roles":[{....}]}
}
预期结果:
{
"roles":[{....}]
}
任何帮助都会得到帮助。谢谢。
我在包含数组类型 key 的表列中有 json 对象roles
。我正在尝试替换roles
值,但它是替换现有角色,添加新的内部角色。这是db fiddler。
当前结果:
{
"roles": {"roles":[{....}]}
}
预期结果:
{
"roles":[{....}]
}
任何帮助都会得到帮助。谢谢。
我最初回答的重点是完全重建 JSON,这就是我添加, ROOT ('roles')
.
所以你不需要使用JSON_MODIFY
,只需替换整个列。
或者,例如,如果您有 JSON 的其他部分,则可以删除, ROOT ('roles')
并保留JSON_MODIFY
。
查询看起来正确,但将对象{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)