¿MySQL Regexp admite la coincidencia Unicode

¿Alguien sabe si la expresión regular de Mysql admite Unicode? He estado investigando y la mayoría de los blogs, etc. parecen indicar que hay un problema o que no es compatible. Me pregunto entonces ¿es mejor usar LIKE para la coincidencia de patrones unicode y regexp para la coincidencia de patrones mejorados ASCII?

Me gusta la idea de poder buscar coincidencias al principio o al final de una cadena, pero si regexp no admite unicode, podría ser difícil si mi texto es unicode.

  1. ¿Alguien sabe si la expresión regular de Mysql admite Unicode? He estado investigando y la mayoría de los blogs, etc. parecen indicar que hay un problema o que no es compatible.

    Como se documenta en Expresiones regulares :

    Advertencia

    Los operadores REGEXP y RLIKE funcionan en modo byte, por lo que no son seguros en varios bytes y pueden producir resultados inesperados con conjuntos de caracteres de múltiples bytes. Además, estos operadores comparan caracteres por sus valores de bytes y los caracteres acentuados no se pueden comparar como iguales, incluso si una colación dada los trata como iguales.

  2. Me pregunto entonces ¿es mejor usar LIKE para la coincidencia de patrones unicode y regexp para la coincidencia de patrones mejorados ASCII?

    Sí, eso sería lo mejor.

  3. Me gusta la idea de poder buscar coincidencias al principio o al final de una cadena, pero si regexp no admite unicode, podría ser difícil si mi texto es unicode.

    Uno puede hacer eso con LIKE también:

     WHERE foo LIKE 'bar%' 

    Y:

     WHERE foo LIKE '%bar' 

MariaDB comenzando con 10.0.5 :

REGEXP / RLIKE, y las nuevas funciones REGEXP_REPLACE (), REGEXP_INSTR () y REGEXP_SUBSTR (), ahora funcionan correctamente con todos los conjuntos de caracteres de varios bytes compatibles con MariaDB, incluidos los juegos de caracteres de Asia oriental (big5, gb2313, gbk, eucjp, eucjpms , cp932, ujis, euckr) y conjuntos de caracteres Unicode (utf8, utf8mb4, ucs2, utf16, utf16le, utf32). En versiones anteriores de MariaDB (y todas las versiones de MySQL) REGEXP / RLIKE funciona correctamente solo con juegos de caracteres de 8 bits.