sql - 从逗号分隔的字符串中删除重复项 (Amazon Redshift)

标签 sql amazon-redshift

我正在使用 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/

相关文章:

python - pyodbc.Error : Data source name not found, 且未指定默认驱动程序 (0) (SQLDriverConnect)')

mysql - 计算每行中由特殊符号字符串分隔的数量,而不使用任何其他表或存储过程

amazon-web-services - Redshift 数据 API 查询语句大小限制为 100 KB

python - 无法从 Redshift 读取列名包含空格的数据

sql - 'greater than' 查询的索引

mysql - 查询中的 JOINS 最终显示太多行

c# - 在 C# LINQ 中使用 SQL LIKE 运算符

postgresql - 统计每月的时事通讯订阅者总数

sql - Redshift 光谱 : how to import only certain files

memory-management - Redshift 查询 : error xx000 disk full redshift