В настоящее время я работаю над упражнением, которое отобразит определенный текст, например TESTTEMP, из последовательности символов, хранящихся в столбце. Пример строки:String Manipulation в Oracle 11g
PROGRAMNAME|MAX2112ETI_L;PROGRAMREV|L;TESTOPTION|FR;TESTTEMP|25;STD IPH|528.63436123348
Теперь то, что мне нужно, чтобы извлечь текст мимо строки TESTTEMP|
и перед ;
. То, что я сделал, - это извлечь весь текст за TESTTEMP|
и просто получить первые два символа. К сожалению, это будет невозможно, так как есть случаи, когда в TESTTEMP|
есть 3 символа. Есть ли способ, чтобы я мог это сделать? Ниже приводится то, что у меня есть до сих пор:
SELECT
SUBSTR(SUBSTR(value, INSTR(value, ';TESTTEMP|')+10), 1, 2) invalue
FROM
(
SELECT
'PROGRAMNAME|MAX2112ETI_L;PROGRAMREV|L;TESTOPTION|FR;TESTTEMP|25;STD IPH|528.63436123348' VALUE
FROM dual
)t;
'REGEXP_SUBSTR (значение '(; | ^) TESTTEMP \ | (\ d +) (; | $)', 1, 1, '', 2) ' –
Используйте REGEXP_SUBSTR, как Егор сказал - это более элегантный способ синтаксического анализа сложной строки, чем серия SUBSTR и INSTR. – denied
привет denier, но это не работает на 3-х значных и отрицательных тестах. – GianIsTheName