Вот одна опция, которая возвращает 2-е и 3-е слово из этой строки:
SQL> with test (col) as
2 (select '1571-P003 031-OHD-SSKS-SSMO' from dual)
3 select regexp_substr(col, '\w+', 1, 2) ||' ' ||
4 regexp_substr(col, '\w+', 1, 3) result
5 from test;
RESULT
--------
P003 031
SQL>
Или другой, который возвращает подстроку между 1-м и 2-м знаком -
:
SQL> with test (col) as
2 (select '1571-P003 031-OHD-SSKS-SSMO' from dual)
3 select substr(col, instr(col, '-', 1, 1) + 1,
4 instr(col, '-', 1, 2) - instr(col, '-', 1, 1) - 1
5 ) result
6 from test;
RESULT
--------
P003 031
SQL>