postgresql — десериализовать php-объект с помощью красного смещения amazon, используя строковые функции

У меня есть таблица в красном смещении, в которой столбец является сериализованным объектом PHP. Я хочу использовать строковые функции красного смещения, десериализовать столбец и создать другую временную таблицу с десериализованными значениями.
например:
исходная таблица будет выглядеть

| col A |
|a:1:{i:145;s:2:"14";} |
|a:1:{i:145;s:2:"15";} |
|a:1:{i:145;s:2:"16";} |

Ожидаемая выходная временная таблица для дальнейшей обработки:

| Col A | Col B |
| 145 | 14 |
| 145 | 15 |
| 145 | 16 |

Как я могу использовать строковые функции красного смещения для десериализации этого объекта?

1

Решение

для вашего конкретного случая это будет работать так:

select
split_part(split_part('a:1:{i:145;s:2:"14";}',':',4),';',1)
,trim(split_part(split_part('a:1:{i:145;s:2:"14";}',':',6),';',1),'"');

если могут быть другие форматы этой структуры, это не сработает

2

Другие решения

Решение, которое я придумал:

SELECT REGEXP_SUBSTR(SPLIT_PART(VALUE,';',1),'[^:]*$') as fieldName1,
trim('"' FROM REGEXP_SUBSTR(SPLIT_PART(VALUE,';',2),'[^:]*$')) as fieldName2;

0