【发布时间】:2020-08-10 19:39:56
【问题描述】:
我正在尝试弄清楚如何修改存储在我的表 (SQL SERVER) 的列中的 json。
我只想删除与特定字符串匹配的 JSON 属性。
假设我们的表中有一条记录,此 JSON 在名为“profile”的列中 (nvarchar(max)):
{
name: "goofy",
class_cod_x: "1345",
}
然后另一条记录呈现这个 JSON:
{
name: "donald",
class_cod_y: "1457",
}
现在我们要搜索并更新记录中包含 startsWith“class_cod”属性的所有 JSON。
我想从该列中删除所有“class_cod..”属性。
我可以想象这样一个查询:
UPDATE myTable SET profile = JSON_MODIFY( profile , "startsWith(class_cod)" , null)
这可能吗?在那种情况下,哪个是正确的语法? 提前致谢!
更新 预期输出:
{
name: "goofy",
}
和
{
name: "donald",
}
“class_cod”字段已完全删除。
更新 2
SQL SERVER 版本:Microsoft SQL Server 2016 (RTM) - 13.0.1601.5 (X64)
“name”和“class_cod..”不是 json 列中唯一可能的字段。 该 JSON 基于可能配置的枚举。
-
JSON 是否可能包含多个“class_cod..”字段。 (极其罕见但可能)
{ name: mario, class_cod_10: 22, class_cod_20: 31, }
【问题讨论】:
-
预期输出是什么?
-
对不起,我会用预期的输出更新答案
-
您的 SQl Server 版本是多少?是
name和class_cod_? JSON对象中唯一可用的键?每个 JSON 对象是否只包含一个class_cod_?键?谢谢。 -
@Zhorov 刚刚更新了您需要的更多信息,提前致谢
-
好的,那么动态语句应该是您的首选。
标签: sql json sql-server nvarchar