我的一个表在SQL Server数据库中具有JSON数据。我需要向现有JSON添加新属性。
表中JSON数据示例:
{ "FirstName": "John" }
我需要在此列中添加另一个属性。
{ "FirstName": "Jonh","City":"Pune" }
我尝试使用JSON_MODIFY函数,但抛出错误。这仅适用于数组吗?
我尝试过的代码:
update <TableName>
set <jsonColumnName> = JSON_MODIFY(<jsonColumnName>, '$.', JSON_QUERY(N'{ "City":"Pune" }'))
where UserId = 1
错误消息:
JSON路径格式不正确。意外字符“。”位于位置2。
答案 0 :(得分:1)
我认为您需要这种语法:
UPDATE <TableName>
SET <jsonColumnName>=JSON_MODIFY(<jsonColumnName>,'$.City','Pune')
WHERE UserId=1
答案 1 :(得分:0)
在您的情况下,您需要对JSON_Modify使用append。像这样:
UPDATE <TableName>
SET <jsonColumnName> = JSON_MODIFY(<jsonColumnName>, 'append $', JSON_QUERY(N'{"City":"Pune"}'))
WHERE UserId=1;
答案 2 :(得分:0)
从JSON添加,更新和删除属性的示例
样本表和数据
declare @Table table
(JsonColumn varchar(max))
insert into @Table
values
('{"FirstName": "John"}')
select * from @Table
插入新媒体资源
UPDATE @Table
SET JsonColumn=JSON_MODIFY(JsonColumn,'$.City','Pune')
select * from @Table
更新现有媒体资源
UPDATE @Table
SET JsonColumn=JSON_MODIFY(JsonColumn,'$.City','Delhi')
select * from @Table
更新多个现有属性
UPDATE @Table
SET JsonColumn= JSON_MODIFY(JSON_MODIFY(JsonColumn,'$.City','Delhi'), '$.FirstName', 'Mukesh')
select * from @Table
删除现有媒体资源
UPDATE @Table
SET JsonColumn=JSON_MODIFY(JsonColumn,'$.City',null)
select * from @Table