sql >> Database teknologi >  >> RDS >> Oracle

Hvordan udtrækker man gruppe fra regulært udtryk i Oracle?

Den tredje parameter i REGEXP_SUBSTR-funktionen angiver positionen i målstrengen (de_desc i dit eksempel), hvor du vil begynde at søge. Forudsat at der findes et match i den givne del af strengen, påvirker det ikke, hvad der returneres.

I Oracle 11g er der en sjette parameter til funktionen, som jeg tror er det du forsøger at bruge, som angiver den opsamlingsgruppe du vil have returneret. Et eksempel på korrekt brug ville være:

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

Hvor den sidste parameter 1 angiv nummeret på den optagelsesgruppe, du vil have returneret. Her er et link til dokumentationen, der beskriver parameteren.

10g ser ikke ud til at have denne mulighed, men i dit tilfælde kan du opnå det samme resultat med:

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

da du ved, at et match vil have præcis et overskydende tegn i begyndelsen og slutningen. (Alternativt kan du bruge RTRIM og LTRIM til at fjerne parenteser fra begge ender af resultatet.)



  1. SQLite datatyper

  2. Forskellen mellem #temptable og ##Temptable?

  3. Vil du vælge alle kolonner, der starter med XXX, ved hjælp af et jokertegn?

  4. SQLiteException:Ugenkendt token ved læsning fra database