我有一个包含电子邮件地址的字符串,例如
,abc@gmail.com, pqr@gmail.com, 123@gmail.com,
abc@gmail.com,, pqr@gmail.com, 123@gmail.com,xyz@gmail.com,
我希望out out是
abc@gmail.com,pqr@gmail.com,123@gmail.com
abc@gmail.com,pqr@gmail.com,123@gmail.com,xyz@gmail.com
我尝试了很多选项,但无法获得所需的结果......有时会使用双逗号,在字符串的开头和结尾处使用逗号。
这可以使用regexp在单个sql语句中实现吗?
我正在使用Oracle 10g。
答案 0 :(得分:1)
with testdata as
(select ',abc@gmail.com, pqr@gmail.com, 123@gmail.com,' as e from dual
union all
select 'abc@gmail.com,, pqr@gmail.com, 123@gmail.com,xyz@gmail.com,' from dual)
select TRIM(',' FROM REPLACE(REPLACE(e,' '),',,',','))
from testdata;
abc@gmail.com,pqr@gmail.com,123@gmail.com
abc@gmail.com,pqr@gmail.com,123@gmail.com,xyz@gmail.com
答案 1 :(得分:0)
- 使用正则表达式,我们可以这样做。
WITH testdata AS
(SELECT ',abc@gmail.com, pqr@gmail.com, 123@gmail.com,' AS e FROM dual
UNION ALL
SELECT 'abc@gmail.com,, pqr@gmail.com, 123@gmail.com,xyz@gmail.com,'
FROM dual
)
SELECT trim(','
FROM regexp_replace((regexp_replace(e,',|[[:space:]]',NULL)),'gmail.com','gmail.com,'))
FROM testdata