Используя регулярное выражение, принимая значения, потенциально не являющиеся json, потенциально не заканчивающиеся четырьмя цифрами, и отменяйте массив значений для имитации вашей таблицы:
SELECT col, (SELECT STRING_AGG(DISTINCT r[1], ',') FROM REGEXP_MATCHES(col, '([\d]{4})"[,\]]', 'g') r)
FROM UNNEST(ARRAY[
'{"itemID":["15671\/3#1#4202","15686\/4#1#4203","15687\/1#1#4203"]}',
'{"itemID":["15671\/3#1#4204","15687\/1#1#4204"]}',
'{"itemID":["10966\/4#1#4201"]}'
]::TEXT[]) AS col
GROUP BY col
Группировка по col
только для того, чтобы иметьДля некоторого идентифицирующего строки значения для группировки первичный ключ был бы идеальным.
Результат:
| col | string_agg |
| ------------------------------------------------------------------ | ---------- |
| {"itemID":["15671\/3#1#4202","15686\/4#1#4203","15687\/1#1#4203"]} | 4202,4203 |
| {"itemID":["15671\/3#1#4204","15687\/1#1#4204"]} | 4204 |
| {"itemID":["10966\/4#1#4201"]} | 4201 |