Oracle 11g erhalten alle übereinstimmenden Vorkommen durch einen regulären Ausdruck

8

Ich verwende Oracle 11g und möchte REGEXP_SUBSTR verwenden, um alle Vorkommen für ein bestimmtes Muster zu finden. Zum Beispiel

%Vor%

gibt nur die erste Übereinstimmung Ta233141 zurück, aber ich möchte die anderen Vorkommen zurückgeben, die mit der Regex übereinstimmen, was Ta233142 Ta233147 Ta233148 bedeutet.

    
florins 11.07.2013, 14:40
quelle

5 Antworten

15

REGEXP_SUBSTR gibt nur einen Wert zurück. Sie könnten Ihre Zeichenfolge in eine Pseudo-Tabelle umwandeln und diese dann nach Übereinstimmungen abfragen. Es gibt eine XML-basierte Methode, die mir im Moment entgeht, aber connect-by funktioniert, solange Sie nur eine Quellzeichenfolge haben:

%Vor%

... gibt Ihnen:

%Vor%

... und Sie können das mit einer etwas einfacheren Version Ihres ursprünglichen Musters filtern:

%Vor%

Das ist nicht sehr hübsch, aber keines hält mehrere Werte in einem Feld.

    
Alex Poole 11.07.2013, 15:08
quelle
1

Wie wäre es mit einer Funktion, die alle Werte durchläuft und zurückgibt?

%Vor%

Dann rufen Sie einfach die Funktion als Teil der Select-Abfrage auf.

    
PhilJ 15.05.2014 16:10
quelle
1

Dies ist ein bisschen spät, aber ich brauchte im Grunde das gleiche und konnte kein gutes Stück finden. Ich musste eine freie Textspalte einer Tabelle für einige Begriffe suchen und sie sammeln. Da dies für andere nützlich sein könnte, habe ich eine Version basierend auf dieser Frage hinzugefügt. Während REGEXP_SUBSTR nur einen Wert zurückgibt, stellt Oracle auch einen REGEXP_COUNT zur Verfügung, um Ihnen zu sagen, wie viele übereinstimmende Elemente in einer gegebenen Zeichenfolge vorhanden sind. Daher können Sie dies mit einer Liste von Indizes zur Auswahl wie folgt verbinden (verallgemeinert für die einzelne Zeile von oben als die 'source_table'):

%Vor%     
Steven Cochran 10.05.2017 13:07
quelle
0

Ich bin fix @Alex Poole Antwort für mehrzeilige Source-Unterstützung und für eine schnellere Ausführung:

%Vor%

Quellzeilen:

%Vor%

Ergebnis:

%Vor%     
David E. Veliev 09.12.2016 20:59
quelle
-1

Das Folgende ist die einfache Lösung für Ihre Frage.

%Vor%     
Mohammed Zubair 04.12.2015 19:02
quelle

Tags und Links