Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Funktionsweise der REGEXP_LIKE()-Funktion in MySQL

In MySQL der REGEXP_LIKE() Funktion wird verwendet, um festzustellen, ob ein String mit einem regulären Ausdruck übereinstimmt.

Die Funktion gibt 1 zurück wenn die Zeichenfolge mit dem bereitgestellten regulären Ausdruck übereinstimmt, und 0 wenn nicht.

Syntax

Die Syntax lautet wie folgt:

REGEXP_LIKE(expr, pat[, match_type])

Wobei expr ist die Eingabezeichenfolge und pat ist der reguläre Ausdruck, für den Sie die Zeichenfolge testen.

Der optionale match_type Argument ermöglicht es Ihnen, den regulären Ausdruck zu verfeinern. Sie können beispielsweise match_type verwenden Groß-/Kleinschreibung angeben oder nicht.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein einfaches Beispiel:

SELECT REGEXP_LIKE('Cat', '.*') Result;

Ergebnis:

+--------+
| Result |
+--------+
|      1 |
+--------+

In diesem Fall gibt unser regulärer Ausdruck ein beliebiges Zeichen in einer beliebigen Sequenz an, sodass wir natürlich eine Übereinstimmung erhalten. Die Funktion gibt 1 zurück um eine Übereinstimmung anzuzeigen.

Beispiel 2 – Keine Übereinstimmung

Hier ist ein Beispiel, bei dem die Eingabezeichenfolge nicht mit dem regulären Ausdruck übereinstimmt:

SELECT REGEXP_LIKE('Cat', 'b+') Result;

Ergebnis:

+--------+
| Result |
+--------+
|      0 |
+--------+

In diesem Fall gibt unser regulärer Ausdruck an, dass es einen oder mehrere b geben sollte Zeichen in beliebiger Reihenfolge. Unser Eingabestring enthält dieses Zeichen nicht und daher 0 zurückgegeben wird.

Beispiel 3 – Übereinstimmung mit dem Anfang einer Zeichenfolge

Hier ist ein Beispiel, bei dem der reguläre Ausdruck angibt, dass die Zeichenfolge mit bestimmten Zeichen beginnen muss:

SELECT REGEXP_LIKE('Cat', '^Ca') Result;

Ergebnis:

+--------+
| Result |
+--------+
|      1 |
+--------+

Und Folgendes passiert, wenn es keine Übereinstimmung gibt:

SELECT REGEXP_LIKE('Cat', '^Da') Result;

Ergebnis:

+--------+
| Result |
+--------+
|      0 |
+--------+

Beispiel 4 – Eine Datenbankabfrage

Diese Funktion kann im WHERE verwendet werden -Klausel von Datenbankabfragen, um nur die Zeilen zurückzugeben, die das Muster enthalten:

SELECT AlbumId, AlbumName
FROM Albums
WHERE REGEXP_LIKE(AlbumName, '^Power');

Ergebnis:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

Hier ist die vollständige Tabelle:

SELECT AlbumId, AlbumName
FROM Albums;

Ergebnis:

+---------+--------------------------+
| AlbumId | AlbumName                |
+---------+--------------------------+
|       1 | Powerslave               |
|       2 | Powerage                 |
|       3 | Singing Down the Lane    |
|       4 | Ziltoid the Omniscient   |
|       5 | Casualties of Cool       |
|       6 | Epicloud                 |
|       7 | Somewhere in Time        |
|       8 | Piece of Mind            |
|       9 | Killers                  |
|      10 | No Prayer for the Dying  |
|      11 | No Sound Without Silence |
|      12 | Big Swing Face           |
|      13 | Blue Night               |
|      14 | Eternity                 |
|      15 | Scandinavia              |
|      16 | Long Lost Suitcase       |
|      17 | Praise and Blame         |
|      18 | Along Came Jones         |
|      19 | All Night Wrong          |
|      20 | The Sixteen Men of Tain  |
+---------+--------------------------+

Beispiel 5 – Der match_type Argument

Sie können ein zusätzliches Argument angeben, um den Übereinstimmungstyp zu bestimmen. Auf diese Weise können Sie beispielsweise angeben, ob bei der Übereinstimmung zwischen Groß- und Kleinschreibung unterschieden wird, ob Zeilenabschlüsse eingefügt werden sollen usw.

Hier ist ein Beispiel für die Angabe einer Übereinstimmung mit Berücksichtigung der Groß- und Kleinschreibung und einer Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung:

SELECT 
  REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive',
  REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';

Ergebnis:

+----------------+------------------+
| Case-Sensitive | Case-Insensitive |
+----------------+------------------+
|              0 |                1 |
+----------------+------------------+

Der match_type Das Argument kann die folgenden Zeichen enthalten:

c
Groß-/Kleinschreibung beachten.
i
Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung.
m
Mehrzeiliger Modus. Zeilenabschlusszeichen innerhalb der Zeichenfolge erkennen. Das Standardverhalten besteht darin, Zeilenabschlusszeichen nur am Anfang und am Ende des Zeichenfolgenausdrucks abzugleichen.
n
Der . Zeichen stimmt mit Zeilenabschlusszeichen überein. Der Standardwert ist . Anpassung, um am Ende einer Zeile zu stoppen.
u
Nur Unix-Zeilenenden. Nur das Newline-Zeichen wird durch den . als Zeilenende erkannt , ^ , und $ Übereinstimmungsoperatoren.

Weitere Beispiele

Weitere Beispiele für grundlegende reguläre Ausdrücke finden Sie unter MySQL REGEXP-Beispiele. REGEXP ist ein Synonym für REGEXP_LIKE() , sodass Sie die Beispiele austauschbar verwenden können.

Siehe auch Reguläre Ausdruckssyntax in der MySQL-Dokumentation.