Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie macht man MySQL auf Multibyte-Zeichen in LIKE und REGEXP aufmerksam?

BEARBEITET, um gültige Kritik zu beheben

Verwenden Sie das HEX() -Funktion, um Ihre Bytes in Hexadezimalzahlen umzuwandeln, und dann Verwenden Sie RLIKE darauf zum Beispiel:

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

Die ungeraden Unicode-Zeichen werden konsistent mit ihren Hex-Werten gerendert, sodass Sie über Standardzeichen von 0-9A-F suchen.

Dies funktioniert auch für "normale" Spalten, Sie brauchen es nur nicht.

p.s. Der (gültige) Punkt von @Kieren wird mit rlike adressiert um Zeichenpaare zu erzwingen