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; 

还有其他一些正则表达式,但似乎不起作用。有什么办法吗?

最佳答案

试试这个

SELECT  array_agg(DISTINCT insurances) 
FROM (SELECT  regexp_split_to_table('Private, Private, Private, Private, Private, Private, United Healthcare'
              , ',\s+') AS insurances) x;

替代方式
SELECT DISTINCT UNNEST(regexp_split_to_array('Private, Private, Private, Private, Private, Private, United Healthcare', ',\s+')) AS insurances;

检查http://docs.aws.amazon.com/redshift/latest/dg/String_functions_header.html都将因redshift失败,这些都不会将text转换为text[]

关于sql - 从逗号分隔的字符串中删除重复项(Amazon Redshift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39909615/

相关文章:

sql - sql 如何计算 sql 存储过程中的附加表?

go - Redshift 返回 []uint8 而不是整数,它们之间的转换返回不正确的值

mysql - Redshift/MySQL-检查2个整数列之间的不相等返回错误的结果

python - 有没有更好的方法来利用 redshift、python 和 powershell 来自动化我的报告?

python - 有没有一种方法可以在redshift中使用CONCAT(table_name(col1,col2,col3,...))连接可变数量的列?

r - 从 R 连接到 Redshift 数据库

php - 将记录从sql提取到表

sql - PostgreSQL根据一个日历日查询一个星期的数据,无论哪个

php - 选择ID出现在另一列MySQL中的项目

mysql - SQL之间的子句太慢