Команда ОБНОВИТЬ в JSON - PullRequest
       19

Команда ОБНОВИТЬ в JSON

2 голосов
/ 25 марта 2020

Я пытаюсь обновить столбец в моей таблице, но в этом столбце хранится объект JSON, но для этого мне нужно также выполнить где с JSON.

Это как данные хранятся в моем столбце RG:

{
   "Id":"00000",
   "Number":"12345678",
   "Emitter":"SSP/SP",
   "Uf":"SP",
   "Emission":"2020-03-04T03:00:00Z"
}

Сначала я хотел бы знать, что не так с этим оператором SELECT:

select * from People where JSON_VALUE (Rg, '$.Uf') LIKE '%35%'

И мою команду UPDATE я пытался выполнить следующим образом:

update People set Rg = JSON_MODIFY (Rg, '$.Uf', 'SP') where JSON_VALUE (Rg, '$.Uf') LIKE '%35%'

Может ли кто-нибудь помочь мне сделать выбор и это обновление, пожалуйста? А что не так с моими командами? Я не мог понять, как выполнять эти две команды, когда задействован JSON OBJECT.

1 Ответ

1 голос
/ 25 марта 2020

И ваш запрос SELECT, и операторы UPDATE в порядке. Я попробовал ниже с тестовой настройкой. Я не столкнулся с какой-либо проблемой.

Настройка теста

CREATE TABLE Test
(
  a int,
  rg NVARCHAR(MAX)
 )

 INSERT INTO Test
 values (1, N'{
   "Id":"00000",
   "Number":"12345678",
   "Emitter":"SSP/SP",
   "Uf":"SP",
   "Emission":"2020-03-04T03:00:00Z"
}');

Запрос выбора выполнения

select * from Test where JSON_VALUE (Rg, '$.Uf') LIKE '%SP%'
+---+--------------------------------------------------------------------------------------------+
| a |                                                   rg                                                    |
+---+--------------------------------------------------------------------------------------------+
| 1 | { "Id":"00000", "Number":"12345678", "Emitter":"SSP/SP", "Uf":"SP", 
"Emission":"2020-03-04T03:00:00Z" } |
+---+--------------------------------------------------------------------------------------------+   

Обновление и выбор чтобы проверить, было ли обновление успешным

update Test 
set rg = JSON_MODIFY(rg, '$.Uf', 'MP') 
where JSON_VALUE(rg, '$.Uf') LIKE '%SP%'
select * from Test;
+---+--------------------------------------------------------------------------------------------+
| a |                                                   rg                                                    |
+---+--------------------------------------------------------------------------------------------+
| 1 | { "Id":"00000", "Number":"12345678", "Emitter":"SSP/SP", "Uf":"MP", 
"Emission":"2020-03-04T03:00:00Z" } |
+---+--------------------------------------------------------------------------------------------+
...