繁体   English   中英

想要在Oracle SQL中简化REGEXP_SUBSTR()

[英]Want to simplify the REGEXP_SUBSTR() in oracle sql

我有两个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其他。

如果您只需要解决空间问题,则查询下面的查询将有助于案例陈述,但是正如注释中所有陈述的那样,如果'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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM