360 votes

insensible à la casse pour l'instruction wildcard LIKE LIKE

Désolé si c'est une répétition. J'ai regardé autour de moi et je n'ai pas trouvé ce que j'étais après, alors voilà.

 SELECT * FROM trees WHERE trees.`title` LIKE  '%elm%'
 

Cela fonctionne bien, mais pas si l'arborescence est nommée Elm ou ELM ect ... Comment rendre le code SQL insensible à la casse pour cette recherche avec joker?

Encore une fois, excuses si cela se répète.

Oh, en utilisant MySql 5 sur Apache.

341voto

cwallenpoole Points 34940

J'ai toujours résolu ça en utilisant plus bas:

 SELECT * FROM trees WHERE LOWER( trees.title ) LIKE  '%elm%'
 

309voto

Quassnoi Points 191041
SELECT  *
FROM    trees
WHERE   trees.`title` COLLATE UTF8_GENERAL_CI LIKE '%elm%'

50voto

aioobe Points 158466

La sensibilité à la casse est définie dans les paramètres de classement des colonnes / tables / base de données. Vous pouvez effectuer la requête sous un classement spécifique de la manière suivante:

 SELECT *
FROM trees
WHERE trees.`title` LIKE '%elm%' COLLATE utf8_general_ci
 

par exemple.

(Remplacez utf8_general_ci par le classement que vous trouvez utile). Le _ci signifie insensible à la casse .

48voto

Voici l'exemple d'une requête simple LIKE:

 SELECT * FROM <table> WHERE <key> LIKE '%<searchpattern>%'
 

Maintenant, insensible à la casse avec LOWER () func:

 SELECT * FROM <table> WHERE LOWER(<key>) LIKE LOWER('%<searchpattern>%')
 

8voto

cgupta Points 97

Je pense que cette requête fera une recherche insensible à la casse:

 SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X