Oracle 11g erhalten Sie alle übereinstimmenden Vorkommnisse, die durch einen regulären Ausdruck
Ich bin mit Oracle 11g und ich möchte die REGEXP_SUBSTR match all die Ereignisse einem bestimmten Muster.
Zum Beispiel
SELECT
REGEXP_SUBSTR('Txa233141b Ta233141 Ta233142 Ta233147 Ta233148',
'(^|\s)[A-Za-z]{2}[0-9]{5,}(\s|$)') "REGEXP_SUBSTR"
FROM DUAL;
gibt nur den ersten match Ta233141 aber ich möchte wieder die andere Vorkommnisse, die mit der regex-Bedeutung Ta233142 Ta233147 Ta233148.
Du musst angemeldet sein, um einen Kommentar abzugeben.
REGEXP_SUBSTR gibt nur einen Wert. Sie könnten sich Ihren string in eine pseudo-Tabelle und Abfrage, für die Spiele. Es ist eine XML-basierte Möglichkeit, dies zu tun, das entgeht mir im moment, aber mit connect-Werken, solange Sie nur eine Quell-Zeichenfolge:
... bietet Ihnen:
... und Sie können den filter, der mit einer etwas einfacheren version von Ihrem ursprünglichen Muster:
Das ist nicht sehr schön, aber weder ist die holding mehrerer Werte in einem Feld.
Dies ist ein wenig spät, aber ich brauchte im Grunde die gleiche Sache und konnte nicht finden, ein gutes snippet. Ich brauchte, um zu suchen, eine freie text-Spalte einer Tabelle für einige Begriffe, und Sie zu sammeln. Wie könnte dies nützlich sein, um zu einem anderen ich habe eine version, basiert auf dieser Frage. Während REGEXP_SUBSTR nur einen Wert zurückgibt, Oracle stellt auch eine REGEXP_COUNT zu sagen, wie viele übereinstimmende Elemente vorhanden sind, die in einer angegebenen Zeichenfolge, daher Sie können verbinden Sie diese mit einer Liste der Indizes, die zur Auswahl der einzelnen wie folgt (verallgemeinert für die einzelne Zeile von oben, als die 'source_table'):
Es hat die Vorteile der Arbeit für eine Liste der ausgewählten Zeilen und nutzt die VERBINDUNG VON minimal (da dies sehr langsam sein kann).
Wie über das hinzufügen einer Funktion, wird die Schleife Durchlaufen und alle Werte zurückgeben?
Dann einfach die Funktion aufrufen, die als Teil der select-Abfrage.
Ich bin fix @Alex Poole Antwort für multi-line-Quelle unterstützen und für mehr schnell ausführen:
Quellcode-Zeilen:
Ergebnis:
Basis auf @David E. Veliev Antwort, das ist die Abfrage für multi-Zeilen-Eingabe. Wenn unten query Arbeit für Sie, berücksichtigen, Abstimmung bis original Antwort.
Eingang:
Ausgabe:
Den unten ist die einfache Lösung für deine Frage.