Обновление объекта JSONB с использованием другой таблицы

#postgresql #jsonb

#postgresql #jsonb

Вопрос:

Я пытаюсь обновить поле JSONB в одной таблице данными из другой таблицы. Например,

 update ms
set data = data || '{"COMMERCIAL": 3.4, "PCT" : medi_percent}'
from mix
where mix.id = mss.data_id
and data_id = 6000
and set_id = 20
  

Это выдает мне следующую ошибку —

 Invalid input syntax for type json
DETAIL:  Token "medi_percent" is invalid.
  

Когда я меняю medi_percent значение на число, я не получаю эту ошибку.

Ответ №1:

{"COMMERCIAL": 3.4, "PCT" : medi_percent} недопустимый текст в формате JSON. Обратите внимание, что здесь не происходит интерполяции строк. Возможно, вы ищете

 json_build_object('COMMERCIAL', 3.4, 'PCT', medi_percent)
  

вместо where medi_percent теперь является выражением (которое, предположительно, будет ссылаться на ваш mix столбец).