La fonction MySQL LENGTH() mesure la longueur de la chaîne en "octets", ce qui signifie qu'elle n'est pas sécurisée pour plusieurs octets. La différence de résultats entre les fonctions multi-octets sécurisées telles que CHAR_LENGTH() ou CHARACTER_LENGTH() et la fonction LENGTH() est particulièrement pertinente pour Unicode, où la plupart des caractères sont codés sur deux octets, ou pour UTF-8. Le nombre d'octets varie . Par exemple, si la chaîne contient quatre caractères de 2 octets, la fonction LENGTH() renvoie 8 et la fonction CHAR_LENGTH() ou CHARACTER_LENGTH() renvoie 4. Comme le montre l'exemple ci-dessous -
mysql> Select LENGTH('tutorialspoint'); +--------------------------+ | LENGTH('tutorialspoint') | +--------------------------+ | 14 | +--------------------------+ 1 row in set (0.00 sec)
Le résultat défini ci-dessus montre que la longueur de la chaîne "tutorialspoint" est de 14 car elle n'a pas été convertie en caractères Unicode. La requête suivante le convertit en caractères Unicode -
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2); Query OK, 0 rows affected (0.02 sec)
Après avoir converti la chaîne en Unicode, le résultat est 28 au lieu de 14 car en Unicode un seul caractère prend 2 octets comme indiqué ci-dessous -
mysql> Select LENGTH(@A); +------------+ | LENGTH(@A) | +------------+ | 28 | +------------+ 1 row in set (0.00 sec)
Mais CHAR_LENGTH() Le résultat donné est 14 car il s'agit d'une fonction sécurisée multi-octets comme indiqué ci-dessous -
mysql> Select CHAR_LENGTH(@A); +-----------------+ | CHAR_LENGTH(@A) | +-----------------+ | 14 | +-----------------+ 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!