[MySQL] Problèmes de casse

Le
Vincent Ramos
Bonjour,

Des recherches au sein de tables en utf8_general_ci avec REGEXP me donnent
de drôles de résultats :
SELECT nom FROM films WHERE nom REGEXP '^a' ORDER BY nom LIMIT 0, 3;
+-+
| nom |
+-+
| Abenobashi (1) |
| Abenobashi (2) |
| Abenobashi (3) |
+-+

Il est normal qu'avec la requête "^a" (<a> en début de ligne) je trouve
aussi "^A" car ma table n'est pas sensible à la casse (utf8_general_*ci).

Pourtant, avec un caractère étendu, cela ne marche pas :
SELECT nom FROM films WHERE nom REGEXP '^½' ORDER BY nom LIMIT 0, 3;
Empty set (0.01 sec)

Je devrais trouver la même chose qu'avec
SELECT nom FROM films WHERE nom REGEXP '^¼' ORDER BY nom LIMIT 0, 3;
qui renvoie :
+-+
| nom |
+-+
| ¼dipus Rex |
+-+

J'ai beau chercher, je ne trouve pas d'explication à cette sensibilité à la
casse seulement pour les caratères étendus. Je précise que je débute en
MySQL.

Merci de tout conseil.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
P'tit Marcel
Le #21844161
Vincent Ramos a écrit :
Pourtant, avec un caractère étendu, cela ne marche pas :
SELECT nom FROM films WHERE nom REGEXP '^½' ORDER BY nom LIMIT 0, 3;
Empty set (0.01 sec)

+-------------+
| nom |
+-------------+
| ¼dipus Rex |
+-------------+




Cette limitation ne me semble pas propre à MySQL. On a le même résultat
en employant la bibliothèque d'expressions rationnelles issue de Perl.
Il semble que le caractère ¼ ne soit pas considéré comme la version en
majuscule de ½ (o e dans l'o).

Ce qui est marrant, c'est que cette limitation ne semble pas concerner
la ligature æ (a e dans l'a).

eça.
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/
Publicité
Poster une réponse
Anonyme