我有两个REGEXP_SUBSTR语句,希望进一步简化。
SELECT REGEXP_SUBSTR ('Node-323401:BellUser:Job-221429','[^ :]+',1,2)FROM DUAL;
SELECT REGEXP_SUBSTR ('WebWORKS3:BellUser','[^ :]+',1,2)FROM DUAL;
对于这两种方式,我都得到了预期的输出:BellUser。令人满意。
如果表达式更改为“ BellUser:Job-221429”或“ Node:323401:BellUser:Job-221429”或“ Web:WORKS3:BellUser”,我需要一种简化正则表达式的方式来获取BellUSer或其他任何东西。
答案 0 :(得分:0)
如果您只需要解决空间问题,则下面的查询将有助于案例说明,但是正如注释中所有内容所述,如果'BellUser'的位置不断变化,此查询将无法正常工作并且没有意义
select CASE WHEN REGEXP_COUNT('WebWORKS3:Bell User', ' ', 1, 'i')= 0 THEN REGEXP_SUBSTR ('WebWORKS3:Bell User','[^ :]+',1,2)
ELSE REGEXP_SUBSTR ('WebWORKS3:Bell User','[^ :]+',1,2) ||' '|| REGEXP_SUBSTR ('WebWORKS3:Bell User','[^ ]+',1,2) END from dual;