我想删除逗号分隔列表中的所有重复字词。
我试过了:
SELECT
REGEXP_REPLACE(
'1234,234,1234,1234,928,1234,123,1234,Abcd,1234,1234',
'([^,\w]+)(,[ ]*[\1])+') AS r
FROM dual
它应该返回
1234,234,928,123,Abcd
但实际上它会返回
1234,234,234,234
还尝试使用([^,\w]+)(,[ ]*\1)+
,但'1234,1234,1234'
会返回(null)
还尝试了
SELECT
REGEXP_REPLACE(
'1234,234,1234,1234,928,1234,123,1234,Abcd,1234,1234',
'([^,\w]+)(,[ ]*[\1])+', '\1') AS r
FROM dual
以及更换后,甚至' \ 1 \ 2'但他们都没有给出理想的结果。
请,任何想法?
答案 0 :(得分:0)
我知道这并不是你要求的方法,但它仍然可以达到同样的结果:
WITH DATA AS
( SELECT '1234,234,1234,1234,928,1234,123,1234,Abcd,1234,1234' str FROM dual)
SELECT DISTINCT trim(regexp_substr(str, '[^,]+', 1, LEVEL)) str
FROM DATA
CONNECT BY instr(str, ',', 1, LEVEL - 1) > 0