MySQL ermöglicht einen Mustervergleich sowohl nach SQL-Standard als auch basierend auf erweiterten regulären Ausdrücken, wie man es von Unix-Hilfsprogrammen wie vi, grep und sed her kennt.
          Beim SQL-Mustervergleich können Sie
          ‘_’ für eine Übereinstimmung
          mit einzelnen Zeichen sowie ‘%’
          für eine Übereinstimmung mit einer beliebigen Anzahl von
          Zeichen (einschließlich 0 Zeichen) verwenden. In MySQL wird
          bei SQL-Mustern standardmäßig keine Unterscheidung der
          Groß-/Kleinschreibung vorgenommen. Einige Beispiele sind hier
          aufgeführt. Achten Sie darauf, in Verbindung mit SQL-Mustern
          nicht = oder <> zu
          verwenden, sondern die Vergleichsoperatoren
          LIKE bzw. NOT LIKE.
        
          Namen, die mit ‘b’ beginnen,
          finden Sie so:
        
mysql> SELECT * FROM haustier WHERE name LIKE 'b%';
+--------+----------+---------+------------+------------+------------+
| name   | besitzer | gattung | geschlecht | geburtstag | todestag   |
+--------+----------+---------+------------+------------+------------+
| Buffy  | Harold   | Hund    | w          | 1989-05-13 | NULL       |
| Bowser | Diane    | Hund    | m          | 1989-08-31 | 1995-07-29 |
+--------+----------+---------+------------+------------+------------+
          Namen, die auf ‘fy’ enden,
          finden Sie so:
        
mysql> SELECT * FROM haustier WHERE name LIKE '%fy';
+--------+----------+---------+------------+------------+----------+
| name   | besitzer | gattung | geschlecht | geburtstag | todestag |
+--------+----------+---------+------------+------------+----------+
| Fluffy | Harold   | Katze   | w          | 1993-02-04 | NULL     |
| Buffy  | Harold   | Hund    | w          | 1989-05-13 | NULL     |
+--------+----------+---------+------------+------------+----------+
          Und Namen, die ‘w’ enthalten,
          finden Sie so:
        
mysql> SELECT * FROM haustier WHERE name LIKE '%w%';
+----------+----------+---------+------------+------------+------------+
| name     | besitzer | gattung | geschlecht | geburtstag | todestag   |
+----------+----------+---------+------------+------------+------------+
| Claws    | Gwen     | Katze   | m          | 1994-03-17 | NULL       |
| Bowser   | Diane    | Hund    | m          | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen     | Vogel   | NULL       | 1997-12-09 | NULL       |
+----------+----------+---------+------------+------------+------------+
          Um Namen zu ermitteln, die aus genau fünf Zeichen bestehen,
          verwenden Sie fünf Instanzen des Musterzeichens
          ‘_’:
        
mysql> SELECT * FROM haustier WHERE name LIKE '_____';
+-------+----------+---------+------------+------------+----------+
| name  | besitzer | gattung | geschlecht | geburtstag | todestag |
+-------+----------+---------+------------+------------+----------+
| Claws | Gwen     | Katze   | m          | 1994-03-17 | NULL     |
| Buffy | Harold   | Hund    | w          | 1989-05-13 | NULL     |
+-------+----------+---------+------------+------------+----------+
          Der andere von MySQL unterstützte Mustervergleichstyp nutzt
          erweiterte reguläre Ausdrücke. Wenn Sie bei diesem Mustertyp
          auf Übereinstimmung testen, verwenden Sie die Operatoren
          REGEXP und NOT REGEXP
          (bzw. deren Synonyme RLIKE und NOT
          RLIKE).
        
Erweiterte reguläre Ausdrücke weisen u. a. die folgenden Merkmale auf:
              ‘.’ stimmt mit genau einem
              beliebigen Zeichen überein.
            
              Eine Zeichenklasse ‘[...]’
              führt zur Übereinstimmung bei jedem Zeichen in den
              Klammern. Beispielsweise liegt bei
              ‘[abc]’ eine
              Übereinstimmung mit ‘a’,
              ‘b’ oder
              ‘c’ vor. Um einen
              Zeichenbereich anzugeben, verwenden Sie einen Bindestrich.
              ‘[a-z]’ führt zur
              Übereinstimmung mit einem beliebigen Buchstaben,
              wohingegen ‘[0-9]’ einer
              Übereinstimmung mit jeder Ziffer entspricht.
            
              ‘*’ stimmt mit null oder
              mehr Instanzen des Elements überein, das ihm vorangeht.
              Beispielsweise liegt bei
              ‘x*’ eine Übereinstimmung
              mit einer beliebigen Anzahl von
              ‘x’-Zeichen vor. Gleiches
              gilt bei ‘[0-9]*’ für eine
              beliebige Anzahl von Ziffern und bei
              ‘.*’ für eine beliebige
              Anzahl eines beliebigen Elements.
            
              Ein REGEXP-Mustervergleich ist
              erfolgreich, wenn eine Übereinstimmung des Musters an
              beliebiger Stelle im getesteten Wert vorliegt. (Hier liegt
              ein Unterschied zum
              LIKE-Mustervergleich, der nur
              erfolgreich ist, wenn das Muster mit dem gesamten Wert
              übereinstimmt.)
            
              Um einen Anker im Muster zu setzen, sodass es mit dem
              Anfang oder Ende des getesteten Wertes übereinstimmen
              muss, verwenden Sie ‘^’ am
              Anfang bzw. ‘$’ am Ende des
              Musters.
            
          Um zu demonstrieren, wie erweiterte reguläre Ausdrücke
          funktionieren, haben wir die oben gezeigten
          LIKE-Abfragen so umgeschrieben, dass sie
          REGEXP verwenden.
        
          Um Namen zu finden, die mit ‘b’
          beginnen, verwenden Sie ‘^’
          für eine Übereinstimmung mit dem Namensanfang:
        
mysql> SELECT * FROM haustier WHERE name REGEXP '^b';
+--------+----------+---------+------------+------------+------------+
| name   | besitzer | gattung | geschlecht | geburtstag | todestag   |
+--------+----------+---------+------------+------------+------------+
| Buffy  | Harold   | Hund    | w          | 1989-05-13 | NULL       |
| Bowser | Diane    | Hund    | m          | 1989-08-31 | 1995-07-29 |
+--------+----------+---------+------------+------------+------------+
          Wenn Sie einen REGEXP-Vergleich mit
          Unterscheidung der Groß-/Kleinschreibung wirklich erzwingen
          wollen, verwenden Sie das Schlüsselwort
          BINARY, um aus einem der Strings einen
          Binär-String zu machen. Bei folgender Abfrage liegt eine
          Übereinstimmung nur bei einem kleinen
          ‘b’ am Anfang des Namens vor:
        
mysql> SELECT * FROM haustier WHERE name REGEXP BINARY '^b';
          Um Namen zu finden, die auf
          ‘fy’ enden, verwenden Sie
          ‘$’ für eine Übereinstimmung
          mit dem Namensende:
        
mysql> SELECT * FROM haustier WHERE name REGEXP 'fy$';
+--------+----------+---------+------------+------------+----------+
| name   | besitzer | gattung | geschlecht | geburtstag | todestag |
+--------+----------+---------+------------+------------+----------+
| Fluffy | Harold   | Katze   | w          | 1993-02-04 | NULL     |
| Buffy  | Harold   | Hund    | w          | 1989-05-13 | NULL     |
+--------+----------+---------+------------+------------+----------+
          Namen schließlich, die ‘w’
          enthalten, finden Sie mit folgender Abfrage:
        
mysql> SELECT * FROM haustier WHERE name REGEXP 'w';
+----------+----------+---------+------------+------------+------------+
| name     | besitzer | gattung | geschlecht | geburtstag | todestag   |
+----------+----------+---------+------------+------------+------------+
| Claws    | Gwen     | Katze   | m          | 1994-03-17 | NULL       |
| Bowser   | Diane    | Hund    | m          | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen     | Vogel   | NULL       | 1997-12-09 | NULL       |
+----------+----------+---------+------------+------------+------------+
Da ein auf einem regulären Ausdruck basierendes Muster eine Übereinstimmung liefert, wenn es an beliebiger Stelle im Wert auftaucht, ist es in dieser Abfrage nicht notwendig, ein Jokerzeichen an den beiden Seiten des Musters zu setzen (bei einem SQL-Muster wäre dies hingegen erforderlich, um eine Übereinstimmung zu erzielen).
          Um Namen zu ermitteln, die aus genau fünf Zeichen bestehen,
          verwenden Sie ‘^’ und
          ‘$’ für Übereinstimmungen
          für Anfang und Ende des Namens und fünf Instanzen von
          ‘.’ dazwischen:
        
mysql> SELECT * FROM haustier WHERE name REGEXP '^.....$';
+-------+----------+---------+------------+------------+----------+
| name  | besitzer | gattung | geschlecht | geburtstag | todestag |
+-------+----------+---------+------------+------------+----------+
| Claws | Gwen     | Katze   | m          | 1994-03-17 | NULL     |
| Buffy | Harold   | Hund    | w          | 1989-05-13 | NULL     |
+-------+----------+---------+------------+------------+----------+
          Sie könnten diese Abfrage auch mithilfe des Operators
          {
          („n}n-mal wiederholen“)
          schreiben:
        
mysql> SELECT * FROM haustier WHERE name REGEXP '^.{5}$';
+-------+----------+---------+------------+------------+----------+
| name  | besitzer | gattung | geschlecht | geburtstag | todestag |
+-------+----------+---------+------------+------------+----------+
| Claws | Gwen     | Katze   | m          | 1994-03-17 | NULL     |
| Buffy | Harold   | Hund    | w          | 1989-05-13 | NULL     |
+-------+----------+---------+------------+------------+----------+
In Anhang G, Beschreibung der MySQL-Syntax für reguläre Ausdrücke, finden Sie weitere Informationen zur Syntax regulärer Ausdrücke.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

