sql >> Databáze >  >> RDS >> Oracle

Jak extrahovat skupinu z regulárního výrazu v Oracle?

Třetí parametr funkce REGEXP_SUBSTR označuje pozici v cílovém řetězci (de_desc ve vašem příkladu), kde chcete začít hledat. Za předpokladu, že je v dané části řetězce nalezena shoda, neovlivní to, co se vrátí.

V Oracle 11g existuje šestý parametr funkce, o kterém si myslím, že se pokoušíte použít, což označuje skupinu zachycení, kterou chcete vrátit. Příkladem správného použití by bylo:

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

Kde je poslední parametr 1 uveďte číslo zachycené skupiny, kterou chcete vrátit. Zde je odkaz na dokumentaci popisující parametr.

Zdá se, že 10g tuto možnost nemá, ale ve vašem případě můžete stejného výsledku dosáhnout pomocí:

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

protože víte, že zápas bude mít na začátku a na konci přesně jeden přebytečný znak. (Alternativně můžete použít RTRIM a LTRIM k odstranění závorek z obou konců výsledku.)



  1. Jaký typ dat pro zeměpisnou šířku a délku?

  2. Předejte pole uložené rutině MySQL

  3. Ladění výkonu kolenem:Nesprávné použití dočasných tabulek

  4. Jak zkontrolovat, zda je vypočítaný sloupec „trvalý“ na serveru SQL Server