如何在SQL Server列中向JSON对象添加属性

时间:2019-03-18 22:57:28

标签: sql-server

我的一个表在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。

3 个答案:

答案 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