Code : SQL
SELECT *
FROM Animal
WHERE commentaires LIKE '%\%%';
Résultat :
id espece sexe date_naissance
nom
commentaires
42 chat
F
2008-04-20 03:20:00 Bilba Sourde de l'oreille droite à 80%
Exclure une chaîne de caractères
C'est logique, mais je précise quand même (et puis ça fait un petit rappel) : l'opérateur logique NOT est utilisable avec LIKE. Si
l'on veut rechercher les animaux dont le nom ne contient pas la lettre a, on peut donc écrire :
Code : SQL
SELECT *
FROM Animal
WHERE nom NOT LIKE '%a%';
Sensibilité à la casse
Vous l'aurez peut-être remarqué en faisant des essais, LIKE 'chaîne de caractères' n'est pas sensible à la casse
(donc aux différences majuscules-minuscules). Pour rappel, ceci est dû à l'interclassement. Nous avons gardé l'interclassement
par défaut du jeu de caractère UTF-8, qui n'est pas sensible à la casse.
Si vous désirez faire une recherche sensible à la casse, vous pouvez définir votre chaîne de recherche comme une chaîne de type
binaire, et non plus comme une simple chaîne de caractères :
Code : SQL
SELECT *
FROM Animal
WHERE nom LIKE '%Lu%'; -- insensible à la casse
SELECT *
FROM Animal
WHERE nom LIKE BINARY '%Lu%'; -- sensible à la casse
Recherche dans les numériques
Vous pouvez bien entendu utiliser des chiffres dans une chaîne de caractères. Après tout, ce sont des caractères comme les
autres. Par contre, utiliser LIKE sur un type numérique (INT par exemple), c'est déjà plus étonnant.
Et pourtant, MySQL le permet. Attention cependant, il s'agit bien d'une particularité MySQL, qui prend souvent un malin plaisir à
étendre la norme SQL pure.
LIKE '1%' sur une colonne de type numérique trouvera donc des nombres comme 10, 1000, 153
Code : SQL
SELECT *
FROM Animal
WHERE id LIKE '1%';
Partie 1 : MySQL et les bases du langage SQL
63/414
www.openclassrooms.com
SELECT *
FROM Animal
WHERE commentaires LIKE '%\%%';
Résultat :
id espece sexe date_naissance
nom
commentaires
42 chat
F
2008-04-20 03:20:00 Bilba Sourde de l'oreille droite à 80%
Exclure une chaîne de caractères
C'est logique, mais je précise quand même (et puis ça fait un petit rappel) : l'opérateur logique NOT est utilisable avec LIKE. Si
l'on veut rechercher les animaux dont le nom ne contient pas la lettre a, on peut donc écrire :
Code : SQL
SELECT *
FROM Animal
WHERE nom NOT LIKE '%a%';
Sensibilité à la casse
Vous l'aurez peut-être remarqué en faisant des essais, LIKE 'chaîne de caractères' n'est pas sensible à la casse
(donc aux différences majuscules-minuscules). Pour rappel, ceci est dû à l'interclassement. Nous avons gardé l'interclassement
par défaut du jeu de caractère UTF-8, qui n'est pas sensible à la casse.
Si vous désirez faire une recherche sensible à la casse, vous pouvez définir votre chaîne de recherche comme une chaîne de type
binaire, et non plus comme une simple chaîne de caractères :
Code : SQL
SELECT *
FROM Animal
WHERE nom LIKE '%Lu%'; -- insensible à la casse
SELECT *
FROM Animal
WHERE nom LIKE BINARY '%Lu%'; -- sensible à la casse
Recherche dans les numériques
Vous pouvez bien entendu utiliser des chiffres dans une chaîne de caractères. Après tout, ce sont des caractères comme les
autres. Par contre, utiliser LIKE sur un type numérique (INT par exemple), c'est déjà plus étonnant.
Et pourtant, MySQL le permet. Attention cependant, il s'agit bien d'une particularité MySQL, qui prend souvent un malin plaisir à
étendre la norme SQL pure.
LIKE '1%' sur une colonne de type numérique trouvera donc des nombres comme 10, 1000, 153
Code : SQL
SELECT *
FROM Animal
WHERE id LIKE '1%';
Partie 1 : MySQL et les bases du langage SQL
63/414
www.openclassrooms.com
