Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como tornar o MySQL ciente de caracteres multibyte em LIKE e REGEXP?


EDITADO para incorporar correção para críticas válidas

Use o HEX() função para renderizar seus bytes para hexadecimal e depois use RLIKE sobre isso, por exemplo:
select * from mytable
where hex(ipa) rlike concat('(..)*', hex('needle'), '(..)*'); -- looking for 'needle' in haystack, but maintaining hex-pair alignment.

Os caracteres unicode ímpares são renderizados de forma consistente para seus valores hexadecimais, então você está pesquisando sobre caracteres padrão 0-9A-F.

Isso também funciona para colunas "normais", você simplesmente não precisa disso.

p.s. O ponto de @Kieren (válido) endereçado usando rlike para impor pares de caracteres