Вот ответ, используя питон udf
create or replace function process_percentages(InputStr varChar)
returns varchar
stable
as $$
import re
OutputStr = ''
pattern=re.compile('(\d+(\.\d+)?%)')
if ('100%' in InputStr) & (InputStr.count('%') == 1):
OutputStr='100%,'
else:
for m in re.finditer(pattern, InputStr):
if float(m.group(1)[:-1]) < 100.0:
OutputStr+=m.group(1) + ','
return OutputStr[:-1]
$$ language plpythonu;
тогда вы можете использовать его как:
Select process_percentages('10% Apple, 10% 5% Grape');
Select process_percentages('100% 10% Apple, 10% 5% Grape');
Select process_percentages('123% nothing 10% Apple, 10% Grape');
Select process_percentages('100% Apple, Grape');
Select process_percentages('10.56% Apple, 5.22% Grape');
Это всегда будет работать и легко адаптируется, если ваши потребности станут немного сложнее.
Вы должны сначала выполнить https://docs.aws.amazon.com/redshift/latest/dg/udf-security-and-privileges.html, чтобы получить разрешения