Хотите упростить REGEXP_SUBSTR () в оракуле sql - PullRequest
0 голосов
/ 31 января 2019

У меня есть два оператора 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, если выражение изменится на «BellUser: Job-221429» или «Узел: 323401: BellUser: Job-221429»или «Web: WORKS3: BellUser» или что-то еще.

1 Ответ

0 голосов
/ 31 января 2019

Если вам нужно решить только проблему с пробелами, запрос ниже поможет с указанием регистра, но, как указано в комментариях, если позиция 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...