我正在尝试从 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');
它返回完全相同的字符串。 :(
谢谢!
最佳答案
这是使用 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,”
关于regex - 在 Redshift 中匹配连续数字 REGEXP_REPLACE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54084967/