Kategorien:

Zeichenfolgenfunktionen (reguläre Ausdrücke)

[ NOT ] RLIKE

Führt einen Vergleich aus, um festzustellen, ob eine Zeichenfolge mit einem angegebenen Muster übereinstimmt oder nicht. Beide Eingaben müssen Textausdrücke sein.

RLIKE ähnelt der Funktion [ NOT ] LIKE, bietet jedoch erweiterte reguläre POSIX-Ausdrücke anstelle von SQL LIKE-Mustersyntax. Unterstützt komplexere Abgleichsbedingungen als LIKE.

Tipp

Sie können den Suchoptimierungsdienst verwenden, um die Leistung von Abfragen zu verbessern, die diese Funktion aufrufen. Weitere Details dazu finden Sie unter Suchoptimierungsdienst.

Aliasse:

[ NOT ] REGEXP (2. Syntax), REGEXP_LIKE (1. Syntax)

Siehe auch: Zeichenfolgenfunktionen (reguläre Ausdrücke)

Syntax

-- 1st syntax
RLIKE( <subject> , <pattern> [ , <parameters> ] )

-- 2nd syntax
<subject> [ NOT ] RLIKE <pattern>
Copy

Argumente

Benötigt:

subject

Abzugleichendes Subjekt.

pattern

Abzugleichendes Muster.

Optional:

parameters

Zeichenfolge aus einem oder mehreren Zeichen, in der die Parameter angegeben sind, die zur Suche nach Übereinstimmungen verwendet werden. Unterstützte Werte:

c, i, m, e, s

Weitere Details dazu finden Sie unter Angeben der Parameter für reguläre Ausdrücke.

Standard: c

Rückgabewerte

Gibt einen BOOLEAN-Wert oder NULL zurück.

  • Wenn RLIKE angegeben ist und eine Übereinstimmung vorliegt, ist der Wert TRUE. Andernfalls wird FALSE zurückgegeben.

  • Wenn NOT RLIKE angegeben ist und keine Übereinstimmung vorliegt, ist der Wert TRUE. Andernfalls wird FALSE zurückgegeben.

  • Wenn entweder RLIKE oder NOT RLIKE angegeben ist, wird NULL zurückgegeben, wenn ein Argument NULL ist.

Nutzungshinweise

Sortierungsdetails

Arguments with collation specifications are currently not supported.

Beispiele

Führen Sie die folgenden Befehle aus, um die Daten für unter diesem Thema verwendeten die Beispiele einzurichten:

CREATE OR REPLACE TABLE rlike_ex(city varchar(20));
INSERT INTO rlike_ex VALUES ('Sacramento'), ('San Francisco'), ('San Jose'), (null);
Copy

Erste Syntax

In den folgenden Beispielen wird eine Mustererkennung ohne Berücksichtigung der Groß-/Kleinschreibung mit Platzhaltern ausgeführt:

SELECT * FROM rlike_ex WHERE RLIKE(city, 'san.*', 'i');
Copy
+---------------+
| CITY          |
|---------------|
| San Francisco |
| San Jose      |
+---------------+
SELECT * FROM rlike_ex WHERE NOT RLIKE(city, 'san.*', 'i');
Copy
+------------+
| CITY       |
|------------|
| Sacramento |
+------------+

In den folgenden Beispielen wird ermittelt, ob eine Zeichenfolge mit dem Format einer Telefonnummer und einer E-Mail-Adresse übereinstimmt. In diesen Beispielen werden die regulären Ausdrücke durch Zeichenfolgen in Dollarzeichen angegeben, damit die Backslashes im regulären Ausdruck nicht umgangen werden.

SELECT RLIKE('800-456-7891', $$[2-9]\d{2}-\d{3}-\d{4}$$) AS matches_phone_number;
Copy
+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+
SELECT RLIKE('jsmith@email.com',$$\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$$) AS matches_email_address;
Copy
+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+

Die folgenden Beispiele prüfen auf dieselben Übereinstimmungen, verwenden aber zur Angabe der regulären Ausdrücke Zeichenfolgenkonstanten in einfachen Anführungszeichen.

Da in dem Beispiel Zeichenfolgenkonstanten in einfachen Anführungszeichen verwendet werden, muss jeder Backslash mit einem weiteren Backslash als Escapezeichen umschlossen werden.

-- Escape the backslash character (\) in \w and \d

SELECT RLIKE('800-456-7891','[2-9]\\d{2}-\\d{3}-\\d{4}') AS matches_phone_number;
Copy
+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+
SELECT RLIKE('jsmith@email.com','\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}') AS matches_email_address;
Copy
+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+

Alternativ können Sie die Anweisungen umschreiben und Sequenzen vermeiden, die auf dem Backslash-Zeichen beruhen.

SELECT RLIKE('800-456-7891','[2-9][0-9]{2}-[0-9]{3}-[0-9]{4}') AS matches_phone_number;
Copy
+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+
SELECT RLIKE('jsmith@email.com','[a-zA-Z_]+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}') AS matches_email_address;
Copy
+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+

Zweite Syntax

Mustererkennung mit Berücksichtigung der Groß- und Kleinschreibung:

SELECT * FROM rlike_ex WHERE city RLIKE 'San.* [fF].*';
Copy
+---------------+
| CITY          |
|---------------|
| San Francisco |
+---------------+

Zusätzliche Beispiele

Weitere Beispiele für reguläre Ausdrücke finden Sie unter [ NOT ] REGEXP.