我正在尝试从Redshift中删除字符串中的连续数字。
我想从'16,16,16,3,3,4,16,16,'
获得'16,3,4,16,'
。
以下构造对我不起作用:
SELECT regexp_replace('16,16,16,3,3,4,16,16,', '(.+)\1{1,}', '\1');
它返回完全相同的字符串。 :(
谢谢!
答案 0 :(得分:1)
这是使用Redshift python UDF的答案。
create or replace function dedupstring(InputStr varChar)
returns varchar
stable
as $$
OutputStr=''
PrevStr=''
first=True
for part in InputStr.split(','):
if part <> PrevStr:
if first:
OutputStr+=part
else:
OutputStr+=','+part
PrevStr=part
first=False
return OutputStr
$$ language plpythonu;
Select dedupstring('16,16,16,3,3,4,16,16,');
这将返回'16,3,4,16'
答案 1 :(得分:1)
您在这里。
SELECT regexp_replace('16,16,16,3,3,4,16,16,', '([0-9]+,){2}', '$1') ;
regexp_replace
----------------
16,3,4,16,