разбить строку на несколько разделителей

#sql #oracle

#sql #Oracle

Вопрос:

У меня есть sql, который возвращает пример строки ниже:

Ввод PKIND:BCMOX:10048301-

вывод BCMOX:10048301

Мне нужно написать код первой подстроки строки - , затем разделить ее : и вернуть 2 amp; 3 item ( BCMOX:10048301 )

Ответ №1:

Если формат строки согласован и вы хотите извлечь все после первого : до первого вхождения - , используйте комбинацию substr и instr .

 select substr(col, instr(col,':') 1, instr(col,'-')-instr(col,':')-1)
from yourtable
where instr(col,':') > 0 and instr(col,'-') > 0 --to get the rows which have these 2 characters
  

Ответ №2:

Версия REGEXP_SUBSTR. Верните все, что находится между первым двоеточием и первым дефисом.

 select regexp_substr('PKIND:BCMOX:10048301-', ':(.*)-', 1, 1, NULL, 1) from dual;