如何删除配置单元字符串中的重复项?

u7up0aaq  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(394)

我有一个逗号分隔的列(字符串)和重复的值。我要删除重复项:
例如

column_name
-----------------
gun,gun,man,gun,man
shuttle,enemy,enemy,run
hit,chase

我想要的结果是:

column_name
----------------
gun,man
shuttle,enemy,run
hit,chase

我正在使用hive数据库。

yrefmtwq

yrefmtwq1#

选项1:保留最后一次出现

这将保留每个单词的最后一次出现。
例如 'hello,world,hello,world,hello' 将导致 'world,hello' ```
select regexp_replace
(
column_name
,'(?<=^|,)(?.?),(?=.(?<=,)\k(?=,|$))'
,''
)

from mytable
;

+-------------------+
| gun,man |
| shuttle,enemy,run |
| hit,chase |
+-------------------+


#### 选项2:保留第一个引用

这将保持每个单词的第一次出现。
例如 `'hello,world,hello,world,hello'` 将导致 `'hello,world'` ```
select  reverse            
        (
            regexp_replace
            (
                reverse(column_name)
               ,'(?<=^|,)(?<word>.*?),(?=.*(?<=,)\\k<word>(?=,|$))'
               ,''
            )
        )

from    mytable
;

选项3:排序

例如 'Cherry,Apple,Cherry,Cherry,Cherry,Banana,Apple' 将导致 'Apple,Banana,Cherry' ```
select regexp_replace
(
concat_ws(',',sort_array(split(column_name,',')))
,'(?<=^|,)(?.*?)(,\k(?=,|$))+'
,'${word}'
)

from mytable
;

相关问题