[英]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.