Rechercher des lignes pour trouver des sous-chaînes dans MySQL
-
Méthode 1 : Rechercher une chaîne/sous-chaîne à l’aide du caractère générique
%
-
Méthode 2 : Rechercher une chaîne/sous-chaîne à l’aide de la fonction
LOCATE()
- Conclusion
Dans certaines situations, vous devez rechercher une chaîne ou une sous-chaîne dans une table.
Par exemple, vous voulez savoir combien il y a d’utilisateurs Gmail dans la table employee
. Un autre exemple est de trouver tous les firstname
commençant par Je
dans la table employee
.
Ici, la recherche d’une chaîne ou d’une sous-chaîne apparaît dans l’image, et il existe différentes manières de rechercher. POSITION()
pour SQL standard, LOCATE()
et %
joker pour MySQL, et INSTR()
pour Oracle.
Nous apprendrons les méthodes prises en charge par MySQL et observerons laquelle est la meilleure et la plus simple pour rechercher des lignes afin de trouver des sous-chaînes dans MySQL. Vous pouvez les examiner tous et ensuite décider quelle méthode est la meilleure dans votre cas.
Méthode 1 : Rechercher une chaîne/sous-chaîne à l’aide du caractère générique %
%
Wildcard est utilisé pour remplacer un ou plusieurs caractères dans une chaîne. Ce caractère générique est utilisé avec l’opérateur LIKE
et l’opérateur LIKE
est utilisé dans la clause WHERE
.
Pour nous entraîner, nous avons créé une nouvelle table nommée employee
. Vous pouvez créer la même chose et la remplir de données en utilisant l’exemple de code donné ci-dessous.
De cette façon, nous serons sur la même page tout en apprenant.
#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;
Production :
Comprenons à considérer différents scénarios de recherche de lignes pour trouver une chaîne ou une sous-chaîne en utilisant le caractère générique %
.
Scénario 1 : Trouver tous les utilisateurs de Gmail
. Autrement dit, nous devons trouver une sous-chaîne dans le email
.
SELECT firstname, lastname from employee where email LIKE '%@gmail.com';
La requête SQL ci-dessus sélectionnera firstname
et lastname
dans la table employee
dont la chaîne email
contient gmail.com
.
Production :
Scénario 2 : Sélectionnez les noms de famille qui se terminent par la lettre a
. Ici, nous trouverons une chaîne, le lastname
.
SELECT lastname FROM employee WHERE lastname LIKE '%a';
Production :
Scénario 3 : Trouvons les noms de city
commençant par L
, se terminant par n
, et ayant quatre caractères entre eux. Un trait de soulignement (_
) correspond à un caractère.
SELECT city FROM employee WHERE city LIKE 'L____n';
Production :
Vous pouvez en savoir plus sur les caractères génériques ici.
Méthode 2 : Rechercher une chaîne/sous-chaîne à l’aide de la fonction LOCATE()
La fonction LOCATE
renvoie la première occurrence de la sous-chaîne dans une chaîne. Il renvoie 0
s’il est impossible de trouver la sous-chaîne dans la chaîne d’origine.
Cette fonction effectue une recherche insensible à la casse, ce qui signifie que HELLO
et hello
sont identiques pour la fonction LOCATE
. Il est utilisé avec la syntaxe suivante.
LOCATE(substring, string, start)
Dans la syntaxe donnée ci-dessus, les deux premiers paramètres nommés substring et string sont obligatoires, mais le troisième paramètre nommé start
est facultatif.
Vous avez peut-être une question sur l’apparence de la sortie ? Comprenons via l’image suivante.
SELECT LOCATE("hotmail", email) FROM employee;
Production :
Conclusion
Nous avons conclu que différentes plates-formes de bases de données prennent en charge différentes méthodes. LOCATE()
et le caractère générique sont compatibles avec MySQL.
Nous avons appris les méthodes prises en charge par MySQL pour rechercher une chaîne ou une sous-chaîne à l’aide d’exemples. Et observez la sortie pour comprendre.