Обновите значение для ключа внутри JSON в MYSQL - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть JSON с аналогичной структурой в базе данных MySQL.

{
  "tagId": "17",
  "label": "Signature",
  "name": "Signature",
  "key": "Signature",
  "placeholder": "Sign Here",
  "type": "printDigital",
  "children": [
   {
     "name": "Signature",
     "key": "Signature",
     "type": "signatureText",
     "label": "Signature",
     "placeholder": "Sign Here"
   },
   {
     "name": "SignerUUID",
     "key": "SignerUUID",
     "type": "userUuid",
     "label": "UUID",
     "placeholder": "UUID"
   }
  ]
}

Я хочу обновить значение в поле имени внутри дочернего JSON для ключа Signature, как показано ниже

{
  "tagId": "17",
  "label": "Signature",
  "name": "Signature",
  "key": "Signature",
  "placeholder": "Sign Here",
  "type": "printDigital",
  "children": [
   {
     "name": "SignHere",
     "key": "Signature",
     "type": "signatureText",
     "label": "Signature",
     "placeholder": "Sign Here"
   },
   {
     "name": "SignerUUID",
     "key": "SignerUUID",
     "type": "userUuid",
     "label": "UUID",
     "placeholder": "UUID"
   }
  ]
}

Как мне эффективно обновить вышеуказанное значение?

1 Ответ

0 голосов
/ 24 февраля 2019

В качестве образца данных вы можете использовать JSON_SEARCH, чтобы найти ребенка с name, равным Signature, а затем использовать JSON_REPLACE для замены значения.Как то так:

UPDATE your_table
SET json_column = JSON_REPLACE(json_column, 
                               JSON_UNQUOTE(JSON_SEARCH(json_column, 'one', 'Signature', NULL, '$.children[*].name')),
                               'SignHere')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...