Оракул 8 извлекает строки из строки

Я имею

"Это <> образец <> текста. Нужно извлечь <>smth1<> и <>smth2<> и многие другие". в столбце базы данных оракула. Мне нужно получить:

образец чего-то

Любая помощь?

3 ответа

Решение

Попробуйте создать эту функцию:

create or replace
Function GetSurroundedText (origStr varchar2, openingStr varchar2, closingStr varchar2, outputSep varchar2)
Return Varchar2
Is
   continue boolean := true;
   l_string Varchar2(2000) := origStr;
   startPos PLS_Integer;
   endPos PLS_Integer;
   openingStrPos PLS_Integer;
   res Varchar2(2000) := '';
   sep Varchar2(100) := outputSep;
Begin
While true
Loop
   openingStrPos :=Instr(l_string, openingStr);
   If openingStrPos > 0 Then
      startPos := openingStrPos + Length(openingStr);
      l_String := Substr(l_string, startPos);
   else
      exit;
   end if;
   endPos := Instr(l_string, closingStr);
   if endPos > 0 Then
      if res = '' Then
         sep := '';
      else
         sep := outputSep;
      end If;
      res := res || sep || Substr(l_string, 1, endpos-1);
      l_String := Substr(l_string, endPos + Length(closingStr));
   else
      exit;
   end if;
End Loop;
return res;
End;

И, в вашем случае, используйте это так:

select GetSurroundedText(mycolumn, '<>', '<>', ' ') from mytable;

Используйте функцию замены, чтобы заменить <> на ''. Это будет работать

В Oracle/PLSQL функция замены заменяет последовательность символов в строке другим набором символов.

replace( string1, string_to_replace, [ replacement_string ])

так

replace( YourString, '<>', '');

Должен сделать свое дело.

Если ваш случай более сложный и вам нужно более продуманное решение, вы можете проверить эту функцию, которая позволяет извлекать слова между разделителями.

http://www.oradev.com/parse_string.jsp

Надеюсь, поможет.

Другие вопросы по тегам