У меня есть следующая таблица в Postgres11
col1 col2 col3
NCT00065442 APC-Placebo apc-placebo
NCT00135226 Placebo placebo
NCT00146640 MR Prednisone mr prednisone
NCT00146640 Placebo - IR Prednisone placebo - ir prednisone
Я хотел бы разделить col3, если в строке есть плацебо и специальные символы '-'.
Желаемый результат:
col1 col2 col3
NCT00065442 APC-Placebo apc
NCT00065442 APC-Placebo placebo
NCT00135226 Placebo placebo
NCT00146640 MR Prednisone mr prednisone
NCT00146640 Placebo - IR Prednisone placebo
NCT00146640 Placebo - IR Prednisone ir prednisone
До сих пор я пробовал выполнять следующие запросы.
select *,
case when col3 ilike '%placebo%' and col3 ~* '-'
then unnest(string_to_array(col3, '-'))
else col3
end
from table
order by col1;
Я также попробовал заменить функцию unnest (string_to_array) следующим образом:
UNNEST(REGEXP_SPLIT_TO_ARRAY(t.name, '\s*[-]\s*'))