Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment rendre MySQL conscient des caractères multi-octets dans LIKE et REGEXP ?

MODIFIÉ pour incorporer un correctif aux critiques valides

Utilisez le HEX() fonction pour rendre vos octets en hexadécimal et puis utiliser RLIKE là-dessus, par exemple :

select * from mytable
where hex(ipa) rlike concat('(..)*', hex('needle'), '(..)*'); -- looking for 'needle' in haystack, but maintaining hex-pair alignment.

Les caractères Unicode impairs s'affichent de manière cohérente avec leurs valeurs hexadécimales, vous effectuez donc une recherche sur les caractères standard 0-9A-F.

Cela fonctionne aussi pour les colonnes "normales", vous n'en avez simplement pas besoin.

p.s. Point (valide) de @Kieren adressé en utilisant rlike pour appliquer des paires de caractères