English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial werden Sie lernen, wie Sie Daten auf Basis eines Teilabgleichs abrufen.
Bis jetzt haben Sie die Bedingungen zur Identifizierung spezifischer Zeichenfolgen gesehen, z.B. WHERE name='Lois Lane'. Aber in SQL können Sie auch den LIKE-Operator verwenden, um Teil- oder Musterabgleich durchzuführen.
Der LIKE-Operator ermöglicht es Ihnen, ein oder mehrere Zeichen mit Wildcards zu spezifizieren, um ein Muster zu matchen. Sie können die folgenden beiden Wildcards verwenden:
Prozentzeichen (%) - Ersetzt jede Anzahl von Zeichen, auch null Zeichen.
Unterstrich (_) - Vollständiges Matchen eines Zeichens
Dies sind einige Beispiele, die zeigen, wie der LIKE-Operator mit Wildcards verwendet wird.
Erklärung | Bedeutung | Rückgabewert |
---|---|---|
WHERE name LIKE 'Da%' | Suchen Sie nach Namen, die mit 'Da' beginnen | David, Davidson |
WHERE name LIKE '%th' | Suchen Sie nachthmit einem Namen, der endet | Elizabeth, Smith |
WHERE name LIKE '%on%' | Suchen Sie nach Namen, die 'on' enthalten | Davidson, Toni |
WHERE name LIKE 'Sa_' | Suchen Sie nach Namen, die mit 'Sa' beginnen und höchstens ein Zeichen folgen | Sa |
WHERE name LIKE '_oy' | Suchen Sie nach Namen, die mit 'oy' enden und höchstens ein Zeichen enthalten | Joy, Roy |
WHERE name LIKE '_an_' | Suchen Sie nachanmit einem Namen, der mit einem Zeichen beginnt und endet | Dana, Hans |
WHERE name LIKE '%ar_' | Suchen Sie nacharmit einem Namen, der mit einer beliebigen Anzahl von Zeichen beginnt und mit höchstens einem Zeichen endet | Richard, Karl |
WHERE name LIKE '_ar%' | Suchen Sie nacharmit einem Namen, der mit höchstens einem Zeichen beginnt und mit einer beliebigen Anzahl von Zeichen endet | Karl, Mariya |
Durch das Suchen einiger Aufzeichnungen lassen wir die oben diskutierten Anweisungen in die Praxis umsetzen.
Betrachten wiremployeesIn der Datenbank gibt es einen Tisch, der die folgenden Aufzeichnungen enthält:
+--------+------------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+------------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | | 6 | simons bistro | 2009-04-01 | 6000 | 1 | +--------+------------------+------------+--------+---------+
Angenommen, Sie möchten alle Mitarbeiter finden, deren Namen mit dem Buchstaben 'S' beginnen.
SELECT * FROM employees WHERE emp_name LIKE 'S%';
Nach der Ausführung der Abfrage erhalten Sie wie folgt:
+--------+------------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+------------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 6 | simons bistro | 2009-04-01 | 6000 | 1 | +--------+------------------+------------+--------+---------+
In MySQL ist die Vergleiche von nicht-binärem String (CHAR, VARCHAR, TEXT) standardmäßig nicht großgeschrieben, während die Vergleiche von binärem String (BINARY, VARBINARY, BLOB) großgeschrieben sind.
Dies bedeutet, dass Sie alle Spaltenwerte, die mit 'S' oder 's' beginnen, erhalten, wenn Sie die Suche WHERE name LIKE 'S%' verwenden (wie Sie sehen, haben wir sowohl 'Sarah' als auch 'simons'). Aber wenn Sie eine区分大小写的搜索, können Sie den Operator BINARY auf die folgende Weise verwenden:
-- Syntax für MySQL-Datenbank SELECT * FROM employees WHERE BINARY emp_name LIKE 'S%';
Jetzt wird dieser Ausdruck nur Mitarbeiter mit einem großen S am Anfang des Namens zurückgeben:
+--------+------------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+------------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+------------------+------------+--------+---------+
Beachtung:Wenn Sie möchten, dass Spalten immer in区分groß- und kleinschreibungsabhängiger Weise behandelt werden, verwenden Sie die区分groß- und kleinschreibungsabhängige oder binäre Sortierweise, um sie zu deklarieren, um mögliche Leistungprobleme zu vermeiden.
Hinweis:Teilübereinstimmung ist sehr nützlich, wenn Sie die genaue Form der zu suchenden Zeichenfolge nicht kennen. Sie können auch Teilübereinstimmung verwenden, um mehrere Zeilen in einer Spalte der Tabelle abzurufen, die ähnliche Zeichenfolgen enthält.