Mysql
 sql >> Database >  >> RDS >> Mysql

Come rendere MySQL consapevole dei caratteri multibyte in LIKE e REGEXP?

MODIFICATO per incorporare correzioni a critiche valide

Usa HEX() funzione per rendere i tuoi byte in esadecimale e quindi usa RLIKE su quello, ad esempio:

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

I caratteri unicode dispari vengono visualizzati in modo coerente con i loro valori esadecimali, quindi stai cercando caratteri standard 0-9A-F.

Funziona anche per le colonne "normali", semplicemente non ne hai bisogno.

p.s. Punto (valido) di @Kieren indirizzato usando rlike per imporre coppie di caratteri