Kategorien:

Zeichenfolgenfunktionen (reguläre Ausdrücke)

RLIKE

Gibt „true“ zurück, wenn das Subjekt mit dem angegebenen Muster übereinstimmt. Beide Eingaben müssen Textausdrücke sein.

RLIKE ähnelt der Funktion 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

REGEXP (2. Syntax), REGEXP_LIKE (1. Syntax)

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

Syntax

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

-- 2nd syntax
<subject> 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

Der Datentyp des zurückgegebenen Werts ist BOOLEAN.

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

Das folgende Beispiel führt eine Mustererkennung ohne Berücksichtigung der Groß-/Kleinschreibung mit Platzhaltern durch:

SELECT * FROM rlike_ex WHERE RLIKE(city, 'san.*', 'i');

+---------------+
| CITY          |
|---------------|
| San Francisco |
| San Jose      |
+---------------+
Copy

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;

+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+

SELECT RLIKE('jsmith@email.com',$$\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$$) AS matches_email_address;

+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+
Copy

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;

+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+

SELECT RLIKE('jsmith@email.com','\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}') AS matches_email_address;

+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+

-- Alternatively, rewrite the statements and avoid sequences that rely on the backslash character

SELECT RLIKE('800-456-7891','[2-9][0-9]{2}-[0-9]{3}-[0-9]{4}') AS matches_phone_number;

+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+

SELECT RLIKE('jsmith@email.com','[a-zA-Z_]+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}') AS matches_email_address;

+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+
Copy

Zweite Syntax

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

SELECT * FROM rlike_ex WHERE city RLIKE 'San.* [fF].*';

+---------------+
| CITY          |
|---------------|
| San Francisco |
+---------------+
Copy

Zusätzliche Beispiele

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