LENGTH()
devuelve la longitud de la cadena medida en bytes . CHAR_LENGTH()
devuelve la longitud de la cadena medida en caracteres .
Esto es especialmente relevante para Unicode, en el que la mayoría de los caracteres se codifican en dos bytes. O UTF-8, donde varía el número de bytes. Por ejemplo:
select length(_utf8 '€'), char_length(_utf8 '€')
--> 3, 1
Como puede ver, el símbolo del euro ocupa 3 bytes (está codificado como 0xE282AC
en UTF-8) aunque solo sea un carácter.