Maison > base de données > tutoriel mysql > Quelle est la différence entre les fonctions MySQL LENGTH() et CHAR_LENGTH() ?

Quelle est la différence entre les fonctions MySQL LENGTH() et CHAR_LENGTH() ?

WBOY
Libérer: 2023-09-02 16:57:07
avant
1219 Les gens l'ont consulté

MySQL LENGTH() 和 CHAR_LENGTH() 函数有什么区别?

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 -

Exemple

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)
Copier après la connexion

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)
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal