Weiter Zurück [Inhalt] Online Suche im Handbuch

31.14 Abfrage von Suchmustern (Patterns)

MySQL kennt alle Standards von ANSI SQL 92. Ein Beispiel, in welchem alle Namen gefunden werden sollen, die mit B anfangen:


mysql> SELECT * FROM tier WHERE name LIKE "b%";
+--------+-----------+---------+-------------+--------------+------------+
| name   | besitzer  | spezies | geschlecht  | geboren      | gestorben  |
+--------+-----------+---------+-------------+--------------+------------+
| Buffy  | Harold    | dog     | w           | 1989-05-13   | NULL       |
| Bowser | Diane     | dog     | m           | 1989-08-31   | 1995-07-29 |
+--------+-----------+---------+-------------+--------------+------------+

oder alle, die mit fy enden.


mysql> SELECT * FROM tier WHERE name LIKE "%fy";
+--------+-----------+---------+-------------+--------------+------------+
| name   | besitzer  | spezies | geschlecht  | geboren      | gestorben  |
+--------+-----------+---------+-------------+--------------+------------+
| Fluffy | Harold    | cat     | w           | 1993-02-04   | NULL       |
| Buffy  | Harold    | dog     | w           | 1989-05-13   | NULL       |
+--------+-----------+---------+-------------+--------------+------------+

Für alle, die ein "w" enthalten:


mysql> SELECT * FROM tier WHERE name LIKE "%w%";
+----------+-----------+---------+-------------+--------------+------------+
| name     | besitzer  | spezies | geschlecht  | geboren      | gestorben  |
+----------+-----------+---------+-------------+--------------+------------+
| Claws    | Gwen      | cat     | m           | 1994-03-17   | NULL       |
| Bowser   | Diane     | dog     | m           | 1989-08-31   | 1995-07-29 |
| Whistler | Gwen      | bird    | NULL        | 1997-12-09   | NULL       |
+----------+-----------+---------+-------------+--------------+------------+

Eine Besonderheit ist die Möglichkeit zur Angabe von genauen Wortlängen:


mysql> SELECT * FROM tier WHERE name LIKE "_____";
+----------+-----------+---------+-------------+--------------+------------+
| name     | besitzer  | spezies | geschlecht  | geboren      | gestorben  |
+----------+-----------+---------+-------------+--------------+------------+
| Claws    | Gwen      | cat     | m           | 1994-03-17   | NULL       |
| Buffy    | Harold    | dog     | w           | 1989-05-13   | NULL       |
+----------+-----------+---------+-------------+--------------+------------+

Über Patterns kann man viele Beispiele zeigen. Im folgenden werden nur Beispiele gebracht, von denen man einige einmal ausprobieren sollte.

Um nach Pattern suchen zu können muß man das Kommando REGEXP oder NOT REGEXP anstelle von LIKE einsetzen. Hier nun ein paar Beispiele:


Um Namen zu finden, die mit b oder B beginnen :

mysql> SELECT * FROM tier WHERE name REGEXP "^[bB]";

Um Namen zu finden, die mit fy enden:

mysql> SELECT * FROM tier WHERE name REGEXP "fy$";

Um Namen zu finden, die W oder W enthalten:

mysql> SELECT * FROM tier WHERE name REGEXP "[wW]";

Um Namen zu suchen, die exakt 5 Buchstaben Länge haben:

mysql> SELECT * FROM tier WHERE name REGEXP "^.....$";

Derselbe Ausdruck mit Hilfe des "repeat" Operators:

mysql> SELECT * FROM tier WHERE name REGEXP "^.{5}$";


Weiter Zurück [Inhalt] Online Suche im Handbuch