Suchzeilen zum Auffinden von Teilstrings in MySQL
-
Methode 1: Eine Zeichenkette/Unterzeichenkette mit dem Platzhalter
%
finden -
Methode 2: Finden Sie einen String/Substring mit der Funktion
LOCATE()
- Schlussfolgerungen
In einigen Situationen müssen Sie eine Zeichenfolge oder eine Teilzeichenfolge in einer Tabelle suchen.
Beispielsweise möchten Sie wissen, wie viele Google Mail-Benutzer in der Tabelle employee
sind. Ein weiteres Beispiel ist, alle Vornamen
beginnend mit Je
in der employee
-Tabelle zu finden.
Hier kommt die Suche nach einer Zeichenfolge oder Teilzeichenfolge ins Spiel, und es gibt verschiedene Suchmöglichkeiten. POSITION()
für Standard-SQL, LOCATE()
und %
-Platzhalter für MySQL und INSTR()
für Oracle.
Wir werden die von MySQL unterstützten Methoden lernen und beobachten, welche die beste und einfachste Möglichkeit ist, Zeilen zu durchsuchen, um Teilzeichenfolgen in MySQL zu finden. Sie können sich alle ansehen und dann entscheiden, welche Methode in Ihrem Fall am besten geeignet ist.
Methode 1: Eine Zeichenkette/Unterzeichenkette mit dem Platzhalter %
finden
%
Wildcard wird verwendet, um ein oder mehrere Zeichen in einer Zeichenfolge zu ersetzen. Dieser Platzhalter wird mit dem LIKE
-Operator verwendet, und der LIKE
-Operator wird in der WHERE
-Klausel verwendet.
Zur Übung haben wir eine neue Tabelle mit dem Namen employee
erstellt. Sie können dasselbe erstellen und mit Daten füllen, indem Sie den unten angegebenen Beispielcode verwenden.
Auf diese Weise werden wir beim Lernen auf derselben Seite sein.
#Create employee table
CREATE TABLE employee(
id int not null primary key,
firstname varchar(60) not null,
lastname varchar(60) not null,
gender varchar(30) not null,
city varchar(40) not null,
email varchar(60) not null
);
#Insert data into employee table.
INSERT INTO employee VALUES
(1,'James','Robert','Male','London','jrober@gmail.com'),
(2,'Mary','Patricia','Female','Berlin','patricia@gmail.com'),
(3,'John','Michael','Male','Paris','johnmichael@yahoo.com'),
(4,'Jennifer','Linda','Female','Lisbon','jennifer@hotmail.com'),
(5,'William','David','Male','Rome','wdwilliam@gmail.com'),
(6,'Elizabeth','Barbara','Female','Dublin','elibarbara011@yahoo.com'),
(7,'Richard','Joseph','Male','Oslo', 'richard@gmail.com'),
(8,'Susan','Jessica','Female','Hamburg','susan01@yahoo.com'),
(9,'Thomas','Charles','Male','Texas', 'thomas.charles@hotmail.com'),
(10,'Karen','Nancy','Female','Washington','karenofficial@gmail.com');
SELECT * FROM employee;
Ausgabe:
Betrachten wir verschiedene Szenarien zum Durchsuchen von Zeilen, um eine Zeichenfolge oder Teilzeichenfolge mit dem Platzhalter %
zu finden.
Szenario 1: Finden Sie alle Gmail
-Benutzer. Das heißt, wir müssen einen Teilstring in der E-Mail
finden.
SELECT firstname, lastname from employee where email LIKE '%@gmail.com';
Die obige SQL-Abfrage wählt firstname
und lastname
aus der employee
-Tabelle, deren email
-String gmail.com
enthält.
Ausgabe:
Szenario 2: Wählen Sie die Nachnamen aus, die mit dem Buchstaben a
enden. Hier finden wir eine Zeichenfolge, den lastname
.
SELECT lastname FROM employee WHERE lastname LIKE '%a';
Ausgabe:
Szenario 3: Lassen Sie uns die Namen der Städte
finden, die mit L
beginnen, mit n
enden und vier Zeichen dazwischen haben. Ein Unterstrich (_
) steht für ein Zeichen.
SELECT city FROM employee WHERE city LIKE 'L____n';
Ausgabe:
Sie können mehr über Wildcard-Zeichen lernen hier.
Methode 2: Finden Sie einen String/Substring mit der Funktion LOCATE()
Die LOCATE
-Funktion gibt das erste Vorkommen des Teilstrings in einem String zurück. Es gibt 0
zurück, wenn keine Teilzeichenfolge in der ursprünglichen Zeichenfolge gefunden werden kann.
Diese Funktion führt eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch, was bedeutet, dass HELLO
und hello
für die Funktion LOCATE
identisch sind. Es wird mit der folgenden Syntax verwendet.
LOCATE(substring, string, start)
In der oben angegebenen Syntax sind die ersten beiden Parameter namens substring und string erforderlich, aber der dritte Parameter namens start
ist optional.
Sie haben vielleicht eine Frage, wie die Ausgabe aussehen wird? Lassen Sie uns anhand des folgenden Bildes verstehen.
SELECT LOCATE("hotmail", email) FROM employee;
Ausgabe:
Schlussfolgerungen
Wir kamen zu dem Schluss, dass unterschiedliche Datenbankplattformen unterschiedliche Methoden unterstützen. LOCATE()
und Platzhalter sind mit MySQL kompatibel.
Anhand von Beispielen haben wir MySQL-unterstützte Möglichkeiten kennengelernt, einen String oder Teilstring zu durchsuchen. Und beobachten Sie die Ausgabe, um zu verstehen.