2009-04-26 7 views
1

Mon problème consiste à rechercher dans une table MySQL une liste de noms de villes correspondants avec une chaîne de recherche initiale afin de gérer des caractères spéciaux tels que ö, etc qui sont encodés avec une entité html (& ouml;).Requête MySQL pour gérer des caractères codés en utilisant des expressions régulières

Exemple:

Il y a une table appelée 'villes'. La colonne du nom de la ville s'appelle 'nom'. Il y a deux villes Hamberg (id 1) et H ä meenlinna (id 2) stocké comme H & auml; meenlinna.

Quelqu'un effectue une recherche en utilisant la chaîne "Ham". Une requête standard telle que

SELECT id, name FROM cities WHERE name LIKE '%Ham' 

ne retournera que la première.

J'ai une regex qui analyse le caractère de l'entité, mais il est implémenté en PHP et est fourni ci-dessous pour être complet.

preg_replace("/&(.).*;/", '$1', $city_name); 

Y at-il une question d'inclure la majorité des personnages uniques qui ont des entités?

Répondre

1

Vous ne devez pas utiliser de références de caractères HTML dans la base de données. Au lieu de cela, vous devez choisir le bon encoding and collation et stocker les données en texte brut.

+0

En effet. Si vous stockez "ö" dans mysql, vous pouvez spécifier assembler insensible sélection en faisant Sélectionnez ... OERE nom COLLATE utf8_general_ci comme '% o' –

Questions connexes