У меня есть следующая таблица в PostgreSQL 11.0
age
(null)
12 Months
2 Years
14 Months
7 Weeks
365 Days
Я применил регулярное выражение для извлечения чисел перед 'месяцами, годами, неделями' и преобразовал их в годы.
Текущий вывод выглядит следующим образом:
age col1
(null) (null)
12 Months 1
2 Years 2
14 Months 1.16666667
7 Weeks 0.13461538
365 Days 1
Используемый запрос приведен ниже:
alter table tbl1
create column col1;
update tbl
set col1 = case
when age ilike '%year%' then (regexp_match(age, '\d+'))[1]::float
when age ilike '%month%' then ( (regexp_match(age, '\d+'))[1]::float / 12)
when age ilike '%week%' then ( (regexp_match(age, '\d+'))[1]::float / 52)
when age ilike '%day%' then ( (regexp_match(age, '\d+'))[1]::float / 365)
else null
end ;
Я хотел бы дополнительно ограничить десятичные разряды до 2 и округлить число. Тип данных col1 - float, и результирующий столбец тоже должен быть float. Ожидаемый результат (только col1):
col1
(null)
1
2
1.17
0.13
1
Любая помощь приветствуется !!