ejemplos - mysql uppercase
MySQL-length() versus char_length() (2)
varchar (10) almacenará 10 caracteres, que pueden ser más de 10 bytes. En los índices, asignará la longitud máxima del campo, por lo que si está utilizando UTF8-mb4, asignará 40 bytes para el campo de 10 caracteres.
¿Cuál es la diferencia principal entre length()
y char_length()
?
Creo que tiene algo que ver con cadenas binarias y no binarias. ¿Hay alguna razón práctica para almacenar cadenas como binarias?
mysql> select length(''MySQL''), char_length(''MySQL'');
+-----------------+----------------------+
| length(''MySQL'') | char_length(''MySQL'') |
+-----------------+----------------------+
| 5 | 5 |
+-----------------+----------------------+
1 row in set (0.01 sec)
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 están codificados 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 signo del euro ocupa 3 bytes (está codificado como 0xE282AC
en UTF-8) aunque solo 0xE282AC
un carácter.