我正在使用 Amazon Redshift。
我在该字符串中有一列存储为逗号分隔,如 Private, Private, Private, Private, Private, Private, United Healthcare
。我想使用 query
从中删除重复项,因此结果应该是 Private, United Healthcare
。我显然从 Stackoverflow 找到了一些解决方案,并且知道可以使用正则表达式。
因此,我尝试使用:
SELECT regexp_replace('Private, Private, Private, Private, Private, Private, United Healthcare', '([^,]+)(,\1)+', '\1') AS insurances;
和
SELECT regexp_replace('Private, Private, Private, Private, Private, Private, United Healthcare', '([^,]+)(,\1)+', '\g') AS insurances;
还有其他一些正则表达式,但似乎不起作用。有什么解决办法吗?
最佳答案
这是 Amazon Redshift 的用户定义函数 (UDF):
CREATE FUNCTION f_uniquify (s text)
RETURNS text
IMMUTABLE
AS $$
-- Split string by comma-space, remove duplicates, convert back to comma-separated
return ', '.join(set(s.split(', ')))
$$ LANGUAGE plpythonu;
测试它:
select f_uniquify('Private, Private, Private, Private, Private, Private, United Healthcare');
返回:
United Healthcare, Private
如果返回值的顺序很重要,那么它就需要一些更具体的代码。
关于sql - 从逗号分隔的字符串中删除重复项 (Amazon Redshift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39909615/