sql >> Base de Datos >  >> RDS >> Mysql

Literales de caracteres Unicode (hexadecimales) en MySQL

Puede especificar literales hexadecimales (o incluso literales binarios ) usando 0x , x'' , o X'' :

select  0xC2A2;
select x'C2A2';
select X'C2A2';

Pero ten cuidado que el tipo de retorno es una cadena binaria, por lo que todos y cada uno de los bytes se consideran un carácter. Puede verificar esto con char_length :

select char_length(0xC2A2)

Si quieres UTF-8 cadenas en su lugar, debe usar convert :

select convert(0xC2A2 using utf8mb4)

Y podemos ver que C2 A2 se considera 1 carácter en UTF-8:

select char_length(convert(0xC2A2 using utf8mb4))

Además, no tiene que preocuparse por los bytes no válidos porque convert los eliminará automáticamente:

select char_length(convert(0xC1A2 using utf8mb4))

Como puede verse, la salida es 0 porque C1 A2 es una secuencia de bytes UTF-8 no válida.