Измените все поля в поле JSON Postgres, которые соответствуют условию - PullRequest
0 голосов
/ 12 сентября 2018

У меня десятки тысяч таких записей (имя столбца «детали»):

"name": "ROSE", "role": "CHEW", "state": "Texas", "surname":
"OBAMA", "addresses": {"msisdn": {"0123456": {}}},
"facility_name": "Texas_Hospital", "receiver_role": "health care
worker", "personnel_code": "99999", "default_addr_type": "msisdn",
"preferred_language": "eng_NG", "uniqueid_field_name":
"personnel_code", "uniqueid_field_length": "5"

Теперь мне нужно добавить код персонала каждого работника здравоохранения в Техасе звездочкой (например, «99999 *»), чтобы внешнее приложение пропустило их.

Я могу изменить их один за другим, выполнив следующее:

update identities_identity SET details =
JSONB_set(details,'{personnel_code}', to_jsonb('99999*'::text)) where
identities_identity.details->>'name' like 'ROSE';

но это очень утомительно, так как в БД их сотни.

Есть ли способ автоматизировать процесс, так что он просто добавляет звездочку к каждому коду, который соответствует выражению (каждый работник здравоохранения в Техасе)

[Название столбца - подробности] [База данных: identity_dentity]

Спасибо

1 Ответ

0 голосов
/ 12 сентября 2018

Ты почти у цели:

UPDATE identities_identity
SET details = jsonb_set(
  details,
  '{personnel_code}',
  to_jsonb(details->>'personnel_code' || '*')
)
WHERE details->>'state' = 'Texas';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...