Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在REGEXP_SUBSTR中使用connect by,而不中断多行的结果_Regex_Oracle_Regexp Substr_Connect By - Fatal编程技术网

在REGEXP_SUBSTR中使用connect by,而不中断多行的结果

在REGEXP_SUBSTR中使用connect by,而不中断多行的结果,regex,oracle,regexp-substr,connect-by,Regex,Oracle,Regexp Substr,Connect By,上面的脚本只有@yahoo.com前面的正则表达式 SELECT CHR(91)||'a-zA-Z0-9._%-'||CHR(93)||'+'|| listagg(REGEXP_SUBSTR('aaa@yahoo.com, bbb@hotmail.com', '@'||CHR(91)||'^,'||CHR(93)||'+', 1, LEVEL), ', ') within group (order by level) as domain FROM DUAL CONNECT BY REGEXP_S

上面的脚本只有@yahoo.com前面的正则表达式

SELECT CHR(91)||'a-zA-Z0-9._%-'||CHR(93)||'+'|| listagg(REGEXP_SUBSTR('aaa@yahoo.com, bbb@hotmail.com', '@'||CHR(91)||'^,'||CHR(93)||'+', 1, LEVEL), ', ') within group (order by level) as domain
FROM DUAL
CONNECT BY REGEXP_SUBSTR('aaa@yahoo.com, bbb@hotmail.com','@'||CHR(91)||'^,'||CHR(93)||'+', 1, LEVEL) IS NOT NULL
order by 1;
预期结果:

 [a-zA-Z0-9._%-]+@yahoo.com, @hotmail.com

当然;把它们聚合回来

[a-zA-Z0-9._%-]+@yahoo.com, [a-zA-Z0-9._%-]+@hotmail.com

如果要将regexp前缀放在所有域中,则


谢谢,它起作用了。如果我需要两个域都加上前缀reg exp。。目前只有第一个条目有。[a-zA-Z0-9.\u%-]+@yahoo.com,@hotmail.com,恐怕我不明白这个问题。请编辑您的初始帖子并添加示例数据以及所需的输出。完成,抱歉造成混淆。我编辑了答案并添加了更多代码。看一看。所有商品,非常感谢;)
SQL> SELECT listagg(REGEXP_SUBSTR('aaa@yahoo.com, bbb@hotmail.com', '@'||CHR(91)||'^,'||CHR(93)||'+', 1, LEVEL), ', ') within group (order by level) as domain
  2  FROM DUAL
  3  CONNECT BY REGEXP_SUBSTR('aaa@yahoo.com, bbb@hotmail.com','@'||CHR(91)||'^,'||CHR(93)||'+', 1, LEVEL) IS NOT NULL
  4  order by 1;

DOMAIN
----------------------------------------------------------------------------------------------------
@yahoo.com, @hotmail.com

SQL>
SQL>     SELECT LISTAGG (   '[a-zA-Z0-9._%-]+'
  2                      || REGEXP_SUBSTR ('aaa@yahoo.com, bbb@hotmail.com',
  3                                        '@' || CHR (91) || '^,' || CHR (93) || '+',
  4                                        1,
  5                                        LEVEL),
  6                      ', ')
  7             WITHIN GROUP (ORDER BY LEVEL) AS domain
  8        FROM DUAL
  9  CONNECT BY REGEXP_SUBSTR ('aaa@yahoo.com, bbb@hotmail.com',
 10                            '@' || CHR (91) || '^,' || CHR (93) || '+',
 11                            1,
 12                            LEVEL)
 13                IS NOT NULL;

DOMAIN
-----------------------------------------------------------------------------------------------
[a-zA-Z0-9._%-]+@yahoo.com, [a-zA-Z0-9._%-]+@hotmail.com

SQL>