Ces deux fonctions sont des fonctions de chaîne et renvoient le nombre de caractères présents dans la chaîne. Mais ils diffèrent en ce que la fonction CHAR_LENGTH() mesure la longueur de la chaîne en « caractères » tandis que la fonction LENGTH() mesure la longueur de la chaîne en « octets ». En d’autres termes, nous pouvons dire que la fonction CHAR_LENGTH() est multi-octets, c’est-à-dire qu’elle ignore si un caractère est sur un seul octet ou sur plusieurs octets. Par exemple, si une chaîne contient quatre caractères de 2 octets, LENGTH().
Cette fonction renverra 8, tandis que la fonction CHAR_LENGTH() renverra 4. En ce sens, on peut dire que CHAR_LENGTH() donne des résultats plus précis que la fonction LENGTH().
Cette différence est particulièrement pertinente pour Unicode, où la plupart des caractères sont codés sur deux octets, ou pour UTF-8, où le nombre d'octets varie. L'exemple ci-dessous montre -
Dans l'exemple ci-dessous, d'abord, la chaîne 'Gaurav' est convertie en ucs2 strong>, qui est le jeu de caractères Unicode sur 2 octets. Nous pouvons alors observer la différence dans le jeu de résultats, c'est-à-dire LENGTH() renvoie la longueur en octets, tandis que CHAR_LENGTH() renvoie la longueur en caractères.
mysql> SET @A = CONVERT('Gaurav' USING ucs2); Query OK, 0 rows affected (0.15 sec) mysql> Select Char_length(@A), LENGTH(@A); +-----------------+------------+ | Char_length(@A) | LENGTH(@A) | +-----------------+------------+ | 6 | 12 | +-----------------+------------+ 1 row in set (0.03 sec)
Maintenant, dans l'exemple ci-dessous, nous utilisons des caractères spéciaux dans UTF-8, le nombre d'octets dans le jeu de caractères varie. Nous pouvons alors observer les différences par rapport à l’ensemble de résultats.
mysql> SET @B = CONVERT('©' USING utf8); Query OK, 0 rows affected (0.15 sec) mysql> Select CHAR_LENGTH(@B); +-----------------------+ | CHAR_LENGTH(@B) | +-----------------------+ | 1 | +-----------------------+ 1 row in set (0.00 sec) mysql> Select LENGTH(@B); +---------------+ | LENGTH(@B) | +---------------+ | 2 | +---------------+ 1 row in set (0.00 sec)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!