215 votes

MySQL - length() vs char_length()

Quelle est la principale différence entre length() et char_length()?

Je crois qu'il a quelque chose à voir avec le binaire et non des chaînes binaires. Est-il une raison pratique pour stocker des chaînes de caractères en binaire?

mysql> select length('MySQL'), char_length('MySQL');
+-----------------+----------------------+
| length('MySQL') | char_length('MySQL') |
+-----------------+----------------------+
|               5 |                    5 |
+-----------------+----------------------+
1 row in set (0.01 sec)

350voto

Andomar Points 115404

LENGTH() renvoie la longueur de la chaîne mesurée en octets.
CHAR_LENGTH() renvoie la longueur de la chaîne mesurée en caractères.

Cela est particulièrement pertinent pour l'Unicode, dans laquelle la plupart des caractères sont codés sur deux octets. Ou UTF-8, où le nombre d'octets varie. Par exemple:

select length(_utf8 '€'), char_length(_utf8 '€')
--> 3, 1

Comme vous pouvez le voir le signe de l'Euro occupe 3 octets (c'est codé comme 0xE282AC en UTF-8), même si c'est seulement un personnage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X