Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wyodrębnić grupę z wyrażenia regularnego w Oracle?

Trzeci parametr funkcji REGEXP_SUBSTR wskazuje pozycję w ciągu docelowym (de_desc w twoim przykładzie), gdzie chcesz rozpocząć wyszukiwanie. Zakładając, że dopasowanie znajduje się w podanej części ciągu, nie ma to wpływu na to, co jest zwracane.

W Oracle 11g istnieje szósty parametr funkcji, który moim zdaniem jest tym, czego próbujesz użyć, a który wskazuje grupę przechwytywania, którą chcesz zwrócić. Przykładem prawidłowego użycia może być:

SELECT regexp_substr('abc[def]ghi', '\[(.+)\]', 1,1,NULL,1) from dual;

Gdzie ostatni parametr 1 podaj numer grupy przechwytywania, którą chcesz zwrócić. Oto link do dokumentacji opisującej parametr.

10g nie wydaje się mieć tej opcji, ale w twoim przypadku możesz osiągnąć ten sam wynik za pomocą:

select substr( match, 2, length(match)-2 ) from (
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]') match FROM dual
);

ponieważ wiesz, że mecz będzie miał dokładnie jeden nadmiarowy znak na początku i na końcu. (Alternatywnie możesz użyć RTRIM i LTRIM, aby usunąć nawiasy z obu końców wyniku).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL/SQL — zgłaszanie wyjątków zdefiniowanych przez użytkownika za pomocą niestandardowego SQLERRM

  2. Jak sklonować środowisko R12.2?

  3. Pobierz wartość z FieldA, wyślij do funkcji db, zwróć wartość do FieldB

  4. NEXT_DAY() Funkcja w Oracle

  5. Kolejna biała księga Optymalizatora 12c