MySQL : comment identifier précisément les accents? - SQL/NoSQL - Programmation
Marsh Posté le 21-05-2008 à 15:35:01
J'oubliais : l'outil avec lequel je faisais mes commandes SQL est MySQL Browser 1.2.12
J'ai seulement eu maintenant l'idée d'ouvrir une invite de commandes directement sur le serveur et de tenter la même requête, et là la lumière fut :
Select * from matable where mylabel like '%e%'
Quasiment tous les fields retournés, pas d'errreur.
Select * from matable where mylabel like '%é%'
ERROR 1267 (HY000): Illegal mix of collations (latin_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'.
On dirait que la conversion va être obligatoire, et meeeeeeeeer....
Marsh Posté le 21-05-2008 à 15:23:07
Préambule : Je vois qu'il y a pas mal de messages sur MySQL et les accents sur le forum mais ici le problème est légèrement différent, je voudrais les identifier
J'ai un champ "mylabel" dans une table, qui contient des strings qui ont parfois des accents.
Je voudrais identifier précisément tous les rows qui ont, par exemple, un "é".
Avec :
Select * from mytable where mylabel like '%é%'
, je reçois tous les rows qui ont, dans leur label, au moins un "e", un "é", un "è" ou un "ê" (et, je suppose, un "ë" bien que je n'en aie pas dans ma table).
Comment puis-je identifier précisément un "é" ?
Notes :
- Le système est Apache2 sous Windows, avec MySQL 5.0.37.
- Ma 3 collations systèmes (_connection, _database et _server) sont "utf_general_ci"
- Tous mes charsets systèmes sont "utf8" (excepté le _filesystem qui est binary)
- Mais la collation de ma table ainsi que celle du champ "mylabel" sont "latin1_swedish_ci" (elles ont été importées de je ne sais où par je ne sais qui, qui n'a pas fait attention à ça ... ) . Si c'est nécessaire je peux faire une conversion mais pour le moment toutes nos applications semblent bien fonctionner avec cette config étrange.
Message édité par ZeBix le 21-05-2008 à 15:24:22