1

我正在尝试将逗号分隔的电子邮件字符串拆分为以逗号分隔的单个电子邮件 ID,但每个电子邮件 ID 都包含在单引号内。

我的输入是 'one@gmail.com,two@gamil.com,three@gmail.com,four@gmail.com'

我的输出应该是: 'one@gmail.com','two@gamil.com','three@gmail.com','four@gmail.com'

我将在 oracle 查询中使用上面的输出字符串,其中条件如下......

Where EmailId's in ( 'one@gmail.com','two@gamil.com','three@gmail.com','four@gmail.com');

我正在使用以下代码来实现这一点

 WHERE EMAIL IN 
                    (REGEXP_SUBSTR('one@gmail.com,two@gamil.com,three@gmail.com,four@gmail.com' ,'[^,]+', 1, LEVEL))
CONNECT BY LEVEL <= LENGTH('one@gmail.com,two@gamil.com,three@gmail.com,four@gmail.com' ) - LENGTH(REPLACE('one@gmail.com,two@gamil.com,three@gmail.com,four@gmail.com' , ',', '')) +1;

但是上面的查询需要 60 秒才能返回 16 条记录。任何人都可以建议我最好的方法...

4

1 回答 1

2

尝试这个,

WHERE email IN (
  select regexp_substr('one@gmail.com,two@gamil.com,three@gmail.com,four@gmail.com','[^,]+', 1, level) from dual
  connect by regexp_substr('one@gmail.com,two@gamil.com,three@gmail.com,four@gmail.com', '[^,]+', 1, level) is not null );
于 2013-08-27T12:59:21.847 回答