Articles

Oracle REGEXP_LIKE Examples

Reguläre Ausdrücke sind Muster, die verwendet werden, um Zeichenkombinationen in Zeichenfolgen abzugleichen. Oracle 10g hat die Unterstützung für reguläre Ausdrücke mit verschiedenen Funktionen eingeführt. Dieser Beitrag konzentriert sich auf die Oracle REGEXP_LIKE Funktion und erklärt, wie sie verwendet wird.

Beschreibung

Der Oracle REGEXP_LIKE wird verwendet, um einen regulären Ausdrucksvergleich durchzuführen (anstelle eines einfachen Mustervergleichs, der von LIKE ausgeführt wird).

Syntax

REGEXP_LIKE ( string expression, pattern )
  • Zeichenfolgenausdruck – der Zeichenfolgenausdruck.
  • pattern – der Parameter match für reguläre Ausdrücke
  • match – ermöglicht es Ihnen, das standardmäßige Übereinstimmungsverhalten der Oracle REGEXP_LIKE-Funktion zu ändern (z. B. die Suche von Groß- und Kleinschreibung auf Groß- und Kleinschreibung zu ändern).

Grundlegende Oracle REGEXP_LIKE-Beispiele

Wir beginnen mit der Erstellung einer Tabelle namens Names, basierend auf ihren Werten, Die folgenden Oracle REGEXP_LIKE-Beispiele führen verschiedene Suchen nach regulären Ausdrücken durch.

CREATE TABLE namesASSELECT last_name AS NAMEFROM hr.employeesORDER BY salary ;

Das folgende Oracle REGEXP_LIKE-Beispiel würde alle Namen abrufen, die den Buchstaben ‚z‘ enthalten. Diese Oracle SELECT-Anweisung legt tatsächlich keine untere oder obere Grenze für die Anzahl der Buchstaben vor oder nach dem Buchstaben ‚z‘ fest (eine beliebige Anzahl von Zeichen ist zulässig), erfordert jedoch, dass das Wort den Buchstaben ‚z‘ enthält.

SELECT *FROM namesWHERE regexp_like (name , 'z') ;NAME-------------------------LorentzGietzOzer

Das nächste Oracle REGEXP_LIKE-Beispiel würde alle Namen abrufen, die die Buchstabenfolge ‚be‘ enthalten. Auch diese Oracle SELECT-Anweisung setzt keine untere oder obere Grenze für die Anzahl der Buchstaben vor oder nach der Buchstabenfolge ‚be‘ (eine beliebige Anzahl von Zeichen ist zulässig), erfordert jedoch, dass das Wort die Buchstabenfolge ‚be‘ enthält.

SELECT *FROM namesWHERE regexp_like (name , 'be') ;NAME---------------------------AbelGreenberg

Verwenden des Pipe-Operators (|)

Der Pipe-Operator (|) wird verwendet, um alternative Übereinstimmungen anzugeben. Im nächsten Oracle REGEXP_LIKE-Beispiel würden wir den Pipe-Operator (|) verwenden, um alle Namen abzurufen, die die Buchstabenfolge ‚be‘ oder ‚ae‘ enthalten. Diese Oracle SELECT-Anweisung setzt tatsächlich keine untere oder obere Grenze für die Anzahl der Buchstaben vor oder nach der Buchstabenfolge ‚be‘ oder ‚ae‘ (eine beliebige Anzahl von Zeichen ist zulässig), erfordert jedoch, dass das Wort diese Sequenzen enthält.

SELECT *FROM namesWHERE regexp_like (name , 'be|ae') ;NAME-------------------------BaerAbelRaphaelyGreenberg

Durch Angabe des Buchstabens ‚c‘ (als drittes Argument der Funktion REGEXP_LIKE) können wir eine Groß- / Kleinschreibung beachten (die Standardeinstellung in Oracle).

SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'c' ) ;NAME-------------------------BaerAbelRaphaelyGreenberg

Und durch Angabe des Buchstabens ‚i‘ (als drittes Argument der Funktion REGEXP_LIKE) können wir eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchführen.

SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'i' ) ;NAME-------------------------BellBernsteinBaerAbelRaphaelyGreenberg

Mit dem Caret-Operator(^)

Wir können den Caret-Operator (^) verwenden, um ein Zeilenanfangszeichen anzugeben, in diesem REGEXP_LIKE-Beispiel würden wir alle Namen abrufen, die mit der Buchstabenfolge „be“ oder „ba“ beginnen (Suche ohne Berücksichtigung der Groß- und Kleinschreibung)

SELECT *FROM namesWHERE regexp_like (name , '^be|^ba' , 'i' ) ;NAME-------------------------BaidaBellBandaBatesBernsteinBaer

Mit der Dollar ($) -Operator

Wir können den Dollar ($) -Operator verwenden, um ein Zeilenende-Zeichen anzugeben, in diesem REGEXP_LIKE-Beispiel würden wir alle Namen abrufen, die mit der Buchstabenfolge ‚es‘ oder ‚er‘ enden (Suche ohne Berücksichtigung der Groß- und Kleinschreibung).

SELECT *FROM namesWHERE regexp_like (name , 'es$|er$' , 'i' ) ;NAME-------------------------PhiltankerColmenaresJonesGatesDaviesNayerStilesDellingerBatesBaer

Mit eckigen Klammern

Wir können die eckigen Klammern verwenden, um eine übereinstimmende Liste anzugeben, die mit einem der darin dargestellten Ausdrücke übereinstimmen soll. Das nächste Oracle REGEXP_LIKE-Beispiel würde alle Namen abrufen, die die Buchstaben ‚j‘ oder ‚z‘ enthalten.

SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------RajsLorentzGietzOzerErrazuriz

Dieses REGEXP_LIKE-Beispiel würde alle Namen abrufen, die die Buchstaben ‚b‘ oder ‚z‘ oder ‚E‘ enthalten (Suche nach Groß- und Kleinschreibung)

 SELECT * FROM names WHERE regexp_like (name , '') ;NAME-------------------------TobiasCabrioEverettLorentzPataballaErnstCambraultGietzMcEwenCambrault

Als nächstes ändern wir unsere letzte Abfrage und machen daraus eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung :

SELECT *FROM namesWHERE regexp_like (name , '' , 'i') ;NAME-------------------------PhiltankerZacharyMarkleGeePerkinsColmenaresPatelOConnellMikkilineniTobiasSeo

Dieses Oracle REGEXP_LIKE-Beispiel würde alle Namen abrufen, die die Buchstaben ‚a‘, ‚b‘ oder ‚c‘ enthalten:

SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos

Und anstatt die Buchstaben ‚a‘, ‚b‘ und ‚c‘ separat anzugeben, können wir einen Bereich angeben:

SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos

Das nächste Oracle REGEP_LIKE-Beispiel würde alle Namen abrufen, die einen Buchstaben im Bereich von ‚d‘ und ‚g‘ enthalten, gefolgt vom Buchstaben ‚a‘.

SELECT *FROM namesWHERE regexp_like (name , 'a') ;NAME-------------------------VargasBaidaFleaurBanda

Mit der Periode (.) Operator

Die Periode (. das nächste Oracle REGEXP_LIKE-Beispiel würde alle Namen abrufen, die einen Buchstaben im Bereich von ‚b‘ und ‚g‘ enthalten, gefolgt von einem beliebigen Zeichen, gefolgt vom Buchstaben ‚a‘.

SELECT *FROM namesWHERE regexp_like (name , '.') ;NAME-------------------------ColmenaresTobiasMcCainSarchandSewallCambraultSciarraCambrault

Wir können den Periodenoperator verwenden, um mehr als ein Zeichen darzustellen, das nächste Oracle REGEXP_LIKE Beispiel würde alle Namen abrufen, die einen Buchstaben im Bereich von „b“ und „g“ enthalten, gefolgt von zwei beliebigen Zeichen, gefolgt vom Buchstaben „a“.

SELECT *FROM namesWHERE regexp_like (name , '..') ;NAME-------------------------De HaanKochhar 

Verwendung der geschweiften Klammern

Die geschweiften Klammern werden verwendet, um eine genaue Anzahl von Vorkommen anzugeben, z. B. alle Namen anzuzeigen, die doppelte „o“ -Buchstaben enthalten.

SELECT *FROM namesWHERE regexp_like (name , '{2}') ;NAME-------------------------KhooBloom

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.