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