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

     2023-03-31     175

关键词:

【中文标题】从逗号分隔的字符串中删除重复项 (Amazon Redshift)【英文标题】:remove duplicates from comma separated string (Amazon Redshift) 【发布时间】:2016-10-07 04:51:15 【问题描述】:

我正在使用 Amazon Redshift。

我在该字符串中有一个列存储为逗号分隔,如Private, Private, Private, Private, Private, Private, United Healthcare。我想使用query 从中删除重复项,因此结果应该是Private, United Healthcare。我显然从 *** 中找到了一些解决方案,并且知道使用正则表达式是可能的。

因此,我尝试使用:

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; 

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

【问题讨论】:

是 Postgres 还是 Redshift? Redshift 所基于的 Postgris 版本太旧了,以至于无法与最新的 Postgres 相比。 它是Redshift,但我认为它使用的是postgrey数据库。 这是两个不同的东西。 Amazon Redshift 基于非常旧的 Postgres 版本。它是 Redshift Postgres - 但不是两者兼而有之,建议的解决方案 regexp_split_to_table 对您不起作用这一事实就是一个迹象。 嗯..好的。在这种情况下我现在该怎么办?顺便感谢您的回复。 Amazon Redshift postgrey sql 中不支持的函数:docs.aws.amazon.com/redshift/latest/dg/… 【参考方案1】:

这是一个用于 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

如果返回值的顺序很重要,那么它需要一些更具体的代码。

【讨论】:

【参考方案2】:

试试这个方法,

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 两者都会因红移而失败,这些都不会将text 转换为text[]

【讨论】:

[Amazon](500310) 无效操作:函数 regexp_split_to_table("unknown", "unknown") 不存在; docs.aws.amazon.com/redshift/latest/dg/…。 Amazon redshift 上的 postgrey sql 不支持函数 regexp_split_to_array @Dev 是的,我在答案中提到了它,arrays aren't supported,我认为 regexp 不会帮助你。尝试使用 create function 作为 kadalamittai 假设【参考方案3】:

另一种选择是尝试 Python UDF。简单的 Python 函数对字符串进行重复数据删除并返回正确的版本。

【讨论】:

如何通过 Oracle 中的正则表达式从逗号分隔列表中删除重复项,但我不想要重复值? [复制]

...te]【发布时间】:2018-08-0703:08:33【问题描述】:我有这个字符串ABCD1234,XYZ,ABCD1234,ABCD123 查看详情

使用正则表达式从逗号分隔列表中删除重复项 [重复]

】使用正则表达式从逗号分隔列表中删除重复项[重复]【英文标题】:Removeduplicatesfromcommaseparatedlistwithregexp[duplicate]【发布时间】:2018-01-0708:26:59【问题描述】:我有contract,clause1,Subsection1.1,contract,clause1,Subsection1.2,paragraph(a),contract... 查看详情

如何通过 Oracle 中的 regexp_replace 从逗号分隔列表中删除重复项?

】如何通过Oracle中的regexp_replace从逗号分隔列表中删除重复项?【英文标题】:Howtoremoveduplicatesfromcommaseparatedlistbyregexp_replaceinOracle?【发布时间】:2016-10-2607:38:39【问题描述】:我有POW,POW,POWPRO,PRO,PRO,PROUTL,TNEUTL,TNEUTL,UTL,UTLTNE,UTL,UTL... 查看详情

Regexp_replace :从 Oracle 中的“+”分隔字符串中删除重复项 [重复]

】Regexp_replace:从Oracle中的“+”分隔字符串中删除重复项[重复]【英文标题】:Regexp_replace:Removedupliactesfrom\'+\'dilimitedstringinOracle[duplicate]【发布时间】:2017-10-3013:30:35【问题描述】:我在表格列中有一个字符串,由“+”分隔。我... 查看详情

如何通过 Oracle regexp_replace 中的正则表达式从逗号分隔列表中删除重复项? [复制]

】如何通过Oracleregexp_replace中的正则表达式从逗号分隔列表中删除重复项?[复制]【英文标题】:HowtoremoveduplicatesfromcommaseparatedlistbyregexinOracleregexp_replace?[duplicate]【发布时间】:2014-12-2715:09:40【问题描述】:我有\'VA-HRD1,VA-HRD1,VA-NO... 查看详情

从 Boost::Tokenizer 中删除重复项?

...1-2312:06:50【问题描述】:我正在尝试拆分一个逗号分隔的字符串,然后对每个令牌执行一些操作,但忽略重复项,等等。大致如下:intmain(int,char**)stringtext="token,teststring";char_separator<cha 查看详情

PL/SQL 逗号分隔列表;删除重复并放入数组

...【问题描述】:我在PL/SQL过程中有一个逗号分隔列表作为字符串。我需要删除重复项将列表放入数组中。我已经找到了多种方法来做到这一点,但不是两者兼而有之。有什么帮助吗?【问题讨论】:如果每个部分你都知道怎么做... 查看详情

正则表达式从逗号分隔列表中删除连续重复(整数和/或浮点数)

】正则表达式从逗号分隔列表中删除连续重复(整数和/或浮点数)【英文标题】:RegextoDeleteConsecutiveDuplicates(integersand/orfloats)fromCommaSeparatedList【发布时间】:2021-06-2415:15:30【问题描述】:据我所知,这里没有这样的确切问题。... 查看详情

使用 jquery 从数组列表中添加和删除数组项

...:我想建立一个可以添加和删除用户的功能以逗号分隔的字符串存储在输入字段中,在html中显示添加的用户列表,以便在需要时删除每个行项目。不幸的是,我的代码中有以下问题:逗号分隔的用户列表+html列表将用户添加到每... 查看详情

从逗号分隔的 INT 字符串创建临时表 [重复]

】从逗号分隔的INT字符串创建临时表[重复]【英文标题】:CreateTempTablefromCommaSeperatedStringofINT\'s[duplicate]【发布时间】:2014-01-0318:49:01【问题描述】:我想在这里使用临时表和WHILE子句分享我的发现。我分隔了一个逗号分隔的INT字... 查看详情

Excel 是不是可以识别单元格中以逗号分隔的数字模式并删除该模式的重复项?

】Excel是不是可以识别单元格中以逗号分隔的数字模式并删除该模式的重复项?【英文标题】:IsitpossibleforExceltorecognizeapatternofcommaseparatednumbersinacellandremoveduplicatesofthatpattern?Excel是否可以识别单元格中以逗号分隔的数字模式并删... 查看详情

从 Pandas Dataframe Column 中删除重复的逗号,换句话说,我只需要列中的文本,用逗号分隔它们

】从PandasDataframeColumn中删除重复的逗号,换句话说,我只需要列中的文本,用逗号分隔它们【英文标题】:RemovingrepeatedcommasfromPandasDataframeColumninotherwordsIjustneedthetextfromthecolumnwithacommaseparatingthem【发布时间】:2021-11-2220:35:43【问... 查看详情

如何在 MySQL 的单个列中删除重复的逗号分隔值

】如何在MySQL的单个列中删除重复的逗号分隔值【英文标题】:HowtoremoveduplicatecommaseparatedvalueinasinglecolumninMySQL【发布时间】:2013-10-2412:24:01【问题描述】:SELECTid,countryFROMmy_records我从MySQL查询中得到了上述结果,我想从结果中删... 查看详情

在逗号分隔的字符串中[重复]

】在逗号分隔的字符串中[重复]【英文标题】:WhereINaCommadelimitedstring[duplicate]【发布时间】:2015-08-1107:41:42【问题描述】:我想从临时表#temptable的完整列表中检索某些用户。查询如下所示:DECLARE@Listvarchar(max)SELECT@List=coalesce(@List+... 查看详情

将字符串中的逗号分隔数字转换为数字向量[重复]

】将字符串中的逗号分隔数字转换为数字向量[重复]【英文标题】:Convertcommaseparatednumbersinacharacterstringtonumericvector[duplicate]【发布时间】:2017-06-1312:05:50【问题描述】:我正在努力将字符串中的逗号分隔数字转换为数字向量。(... 查看详情

用逗号分隔数组,但是当涉及到最后一个字符串时,删除逗号[重复]

】用逗号分隔数组,但是当涉及到最后一个字符串时,删除逗号[重复]【英文标题】:Separatearrayswithforeachwithcomma,butwhenitcomestothelaststring,deletethecomma[duplicate]【发布时间】:2021-12-0911:20:13【问题描述】:我将我的数据列为数组,但... 查看详情

如何通过 Oracle regexp_replace 从空格分隔列表中删除重复项? [复制]

】如何通过Oracleregexp_replace从空格分隔列表中删除重复项?[复制]【英文标题】:HowtoremoveduplicatesfromspaceseparatedlistbyOracleregexp_replace?[duplicate]【发布时间】:2017-03-0815:18:48【问题描述】:我有一个名为“ABAACD”的列表。我的预期结... 查看详情

R:如何计算列中用逗号分隔的所有字符值?

】R:如何计算列中用逗号分隔的所有字符值?【英文标题】:R:HowtoCountAllCharacterValuesSeparatedByCommasInAColumn?【发布时间】:2019-12-1206:30:45【问题描述】:下面是我正在使用的几行测试数据。我想计算频率ICD10Code列中由列分隔的所... 查看详情