Я хочу извлечь значение json из столбца и вставить его в новый.
Пример строки скопированного оператора вставки:
INSERT INTO "table_name".("booking_number","arrival_date","departure_date","custom_fields","customer_id","import_id","id","at_table","a_la_carte","value")
VALUES
(E'00000007',E'2019-01-02 12:00:00',E'2020-02-05 12:00:00',E'[{"protelSurname": "Smith", "servicio_tags": ["protel-info"], "protelUniqueID": "[{\\"ID\\":\\"294623726\\",\\"Type\\":\\"21\\",\\"ID_Context\\":\\"GHA\\"},{\\"ID\\":\\"4842148\\",\\"Type\\":\\"1\\",\\"ID_Context\\":\\"protelIO\\"}]", "protelGivenName": "Seth"}, {"value": "3/3/3/3/3", "display_name": "Personen Anzahl", "servicio_tags": ["person-number-info"]}, {"value": "en", "display_name": "Sprache", "servicio_tags": ["language"]}, {"value": " Robotics", "display_name": "Begleiter", "servicio_tags": ["accompanied-guests"]}, {"value": "2. Januar 2019", "display_name": "Anreise", "servicio_tags": ["arrival"]}, {"value": "5. Februar 2020", "display_name": "Abreise", "servicio_tags": ["departure"]}, {"value": "EBROV RO", "display_name": "Rate Code", "servicio_tags": ["price-type"]}, {"value": "SSV", "display_name": "Zimmer Typ", "servicio_tags": ["room-type"]}, {"value": "2013", "display_name": "Zimmernummer", "servicio_tags": ["room-number"]}, {"value": "Australia", "display_name": "Nation", "servicio_tags": ["nation"]}, {"value": "", "display_name": "Gruppe", "servicio_tags": ["group-name"]}]',1,36020,369528,FALSE,FALSE,E'{"protelSurname": "Smith", "servicio_tags": ["protel-info"], "protelUniqueID": "[{\\"ID\\":\\"294623726\\",\\"Type\\":\\"21\\",\\"ID_Context\\":\\"GHA\\"},{\\"ID\\":\\"4842148\\",\\"Type\\":\\"1\\",\\"ID_Context\\":\\"protelIO\\"}]", "protelGivenName": "Seth"}');
Я хочу извлечь protelUniqueID с меткой servicio ["protel-info"]. В лучшем случае только значение ID. В этом случае 294623726. Затем я хочу создать новый столбец с именем guest_profile_id в этой таблице с именем guest_group и вставить это значение для той же строки.
Так что я думаю, что это необходимо сделать с помощью следующих шагов:
- Создание нового столбца
- Идентификатор запроса из json столбец
- Вставка идентификатора в новый столбец
Моя попытка пока для шага 2)
SELECT *
FROM guest_group gg
cross join lateral jsonb_array_elements(custom_fields)
WHERE value @> '{"servicio_tags": ["protel-info"]}'::jsonb
AND gg.customer_id = 1
Спасибо за помощь.