Как добавить свойство в объект JSON в столбце SQL Server - PullRequest
1 голос
/ 19 марта 2019

Одна из моих таблиц содержит данные JSON в базе данных SQL Server.Мне нужно добавить новое свойство в существующий 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 ]

1 голос
/ 19 марта 2019

Я думаю, вы хотите этот синтаксис:

UPDATE <TableName>
SET <jsonColumnName>=JSON_MODIFY(<jsonColumnName>,'$.City','Pune')
WHERE UserId=1
0 голосов
/ 19 марта 2019

Пример добавления, обновления и удаления свойства из 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
0 голосов
/ 19 марта 2019

В вашем случае вам нужно использовать append с JSON_Modify. Примерно так:

UPDATE <TableName>
SET <jsonColumnName> = JSON_MODIFY(<jsonColumnName>, 'append $', JSON_QUERY(N'{"City":"Pune"}'))
WHERE UserId=1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...