Insensible aux accents de requête de recherche dans MySQL
Est-il possible de faire la requête de recherche insensible aux accents?
de la colonne et de la table de classement sont utf8_polish_ci et je ne veux pas les changer.
exemple word : toruń
select * from pages where title like '%torun%'
Il ne trouve pas de "toruń". Comment puis-je le faire?
- stackoverflow.com/questions/2302813/...
- J'ai essayé avant, mais ne fonctionne pas pour moi.
- avez-vous trouvé une solution, vous pouvez partager avec nous?
- accepté réponse est encore de travailler pour moi.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez modifier le classement au moment de l'exécution de la requête sql,
mais méfiez-vous que la modification du classement à la volée lors de l'exécution renonce à la possibilité de mysql à l'aide d'un indice, de sorte que les performances sur de grandes tables peuvent être terribles.
Ou, vous pouvez le copier dans une autre colonne, comme
searchable_title
, mais de modifier le classement sur elle. C'est en fait commune à faire ce genre de trucs, lorsque vous copiez des données, mais ont une certaine forme légèrement différente, optimisé pour les particuliers de la charge de travail/but. Vous pouvez utiliser des déclencheurs comme un joli moyen de garder les copies de colonnes dans la synchronisation. Cette méthode a le potentiel d'effectuer ainsi, si indexés.Remarque - assurez-vous que votre base de données a vraiment ces personnages et non des entités html.
Aussi, le jeu de caractères de votre connexion questions. Ce qui précède suppose qu'il est défini à l'utf-8, par exemple, via nom de l'ensemble comme
set names utf8
Si non, vous avez besoin d'un introducteur pour la valeur littérale
et bien sûr, la valeur dans les apostrophes doivent être encodés en utf-8, même si le reste de la requête sql n'est pas.
...where city like _utf8'%lodz%' collate utf8_general_ci
Cela ne marchera pas dans des circonstances extrêmes, mais essayez de modifier le classement de la colonne de UFT8
utf8_unicode_ci
. Ensuite, les caractères accentués sera égal à leur non-accentués homologues.Vous pouvez essayer de SOUNDEX:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex
Cela se compare deux chaînes de caractères par la façon dont ils sonnent. Mais de toute évidence, cela offre beaucoup plus de résultats.