我有以重复值分隔的列(字符串)逗号。我想删除重复项:
例如
列名
-----------------
枪,枪,男子,枪,男子
穿梭,敌人的敌人,运行
命中,追
我想要的结果如下:
列名
----------------
枪,男子
穿梭,敌人,运行
命中,追
我正在使用hive数据库。请帮助。
答案 0 :(得分:4)
这将保留每个单词的最后一次出现
例如。 'hello,world,hello,world,hello'
会产生'world,hello'
select regexp_replace
(
column_name
,'(?<=^|,)(?<word>.*?),(?=.*(?<=,)\\k<word>(?=,|$))'
,''
)
from mytable
;
+-------------------+
| gun,man |
| shuttle,enemy,run |
| hit,chase |
+-------------------+
这将保留每个单词的第一次出现
例如。 'hello,world,hello,world,hello'
会产生'hello,world'
select reverse
(
regexp_replace
(
reverse(column_name)
,'(?<=^|,)(?<word>.*?),(?=.*(?<=,)\\k<word>(?=,|$))'
,''
)
)
from mytable
;
E.g。 'Cherry,Apple,Cherry,Cherry,Cherry,Banana,Apple'
会产生'Apple,Banana,Cherry'
select regexp_replace
(
concat_ws(',',sort_array(split(column_name,',')))
,'(?<=^|,)(?<word>.*?)(,\\k<word>(?=,|$))+'
,'${word}'
)
from mytable
;