Строковая операция Oracle для исключения определенных символов на основе разделителя - PullRequest
0 голосов
/ 29 марта 2019

Из строки ES-123456-PSA Spain-101 мне нужно извлечь только ES-123456-101 Положение разделителя зафиксировано.

Пробовал REGEXP_SUBSTR('ES-123456-PSA Spain-101','[^-]+',2,3 ), что дает PSA Испания.

Есть ли способ игнорировать эти конкретные символы и вернуть остальные из них.

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Вы также можете использовать subtr и instr

with t as
(
  select 'ES-123456-PSA Spain-101' as text from dual
)

select substr(text,1,instr(text,'-',1,2)) -- ES-123456-
       ||substr(text,instr(text,'-',1,3)+1) -- 101
from t
1 голос
/ 29 марта 2019

Если вы хотите ES-123456-101, тогда используйте это:

SELECT REGEXP_REPLACE('ES-123456-PSA Spain-101', '[^-]+-', '', 1, 3 )
FROM dual;

Если вы хотите ES-12345-101, тогда не могли бы вы объяснить логику для 12345, а не 123456?Опечатка или пропуск последнего символа?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...