У меня есть таблица со столбцом, разделенным ';'. Данные выглядят так:
row_id col
1 p.[D389R;D393_W394delinsRD]
2 p.[D390R;D393_W394delinsRD]
3 p.D389R
4. p.[D370R;D393_W394delinsRD]
Я хотел бы заменить квадратные скобки [], где бы они ни находились, и получить текст. Позже я хотел бы разбить строку на ';' и объединить "р." в разделенный текст (если его там нет) и создайте новую строку.
Ожидаемый результат:
row_id new_col
1 p.D389R
2 p.D393_W394delinsRD
3 p.D390R
4 p.D393_W394delinsRD
5 p.D389R
6 p.D370R
7 p.D393_W394delinsRD
Я попытался выполнить запрос ниже, чтобы получить желаемый результат.
SELECT *,
CASE
WHEN regexp_split_to_table(regexp_replace(col, '\[|\]', '', 'g'), E';') NOT LIKE 'p.[%'
THEN 'p.' || (regexp_split_to_table(regexp_replace(col, '\[|\]', '', 'g'), E';'))[1]
ELSE regexp_split_to_table(regexp_replace(col, '\[|\]', '', 'g'), E';')[2]
END AS new_col
FROM table;
Любые предложения будут очень полезны.