Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[MySQL] Problèmes de casse

1 réponse
Avatar
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.

1 réponse

Avatar
P'tit Marcel
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/