我有一个逗号分隔的列(字符串)和重复的值。我要删除重复项:
例如
column_name
-----------------
gun,gun,man,gun,man
shuttle,enemy,enemy,run
hit,chase
我想要的结果是:
column_name
----------------
gun,man
shuttle,enemy,run
hit,chase
我正在使用hive数据库。
我有一个逗号分隔的列(字符串)和重复的值。我要删除重复项:
例如
column_name
-----------------
gun,gun,man,gun,man
shuttle,enemy,enemy,run
hit,chase
我想要的结果是:
column_name
----------------
gun,man
shuttle,enemy,run
hit,chase
我正在使用hive数据库。
1条答案
按热度按时间1sbrub3j1#
选项1:保留最后一次出现
这将保留每个单词的最后一次出现。
例如
'hello,world,hello,world,hello'
将导致'world,hello'
```select regexp_replace
(
column_name
,'(?<=^|,)(?.?),(?=.(?<=,)\k(?=,|$))'
,''
)
from mytable
;
+-------------------+
| gun,man |
| shuttle,enemy,run |
| hit,chase |
+-------------------+
选项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
;