Mysql
 sql >> Base de données >  >> RDS >> Mysql

Qu'est-ce que CHAR_LENGTH() dans MySQL ?

Dans MySQL, le CHAR_LENGTH() La fonction renvoie la longueur d'une chaîne, mesurée en caractères. MySQL a également CHARACTER_LENGTH() , qui est synonyme de CHAR_LENGTH() .

Voici un exemple :

SELECT CHAR_LENGTH('Lit');

Et voici le résultat :

+--------------------+
| CHAR_LENGTH('Lit') |
+--------------------+
|                  3 |
+--------------------+

Espaces de fin

Notez que CHAR_LENGTH() inclut des espaces à la fin (par exemple, des espaces à la fin de la chaîne) dans ses calculs.

Donc si on ajoute un espace à la fin de l'exemple précédent :

SELECT CHAR_LENGTH('Lit ');

Voici le résultat :

+---------------------+
| CHAR_LENGTH('Lit ') |
+---------------------+
|                   4 |
+---------------------+

Mais nous pouvons toujours supprimer cet espace de fin en ajoutant le TRIM() fonction dans le mix :

SELECT CHAR_LENGTH(TRIM('Lit '));

Voici le résultat :

+---------------------------+
| CHAR_LENGTH(TRIM('Lit ')) |
+---------------------------+
|                         3 |
+---------------------------+

Espaces vides

C'est la même chose avec les blancs en tête. Donc, si nous ajoutons un espace au début de la chaîne à la place :

SELECT CHAR_LENGTH(' Lit');

Nous obtenons le même résultat :

+---------------------+
| CHAR_LENGTH(' Lit') |
+---------------------+
|                   4 |
+---------------------+

Types de données

Peu importe le type de données sous lequel la chaîne est stockée, elle renverra toujours les mêmes résultats. Ceci est en contraste avec le LENGTH() fonction, qui renverra le double du nombre de caractères dans les cas où les données sont stockées sous forme de chaîne Unicode.

Dans l'exemple suivant, la colonne ArtistName utilise varchar(255) :

SELECT CHAR_LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Voici le résultat :

+-------------------------+
| CHAR_LENGTH(ArtistName) |
+-------------------------+
|                       3 |
+-------------------------+

Et si on modifie le ArtistName colonne pour utiliser Unicode :

ALTER TABLE Artists 
MODIFY COLUMN ArtistName VARCHAR(255) unicode;

Et relancez la même requête :

SELECT CHAR_LENGTH(ArtistName) 
FROM Artists
WHERE ArtistName = 'Lit';

Nous obtenons toujours le même résultat :

+-------------------------+
| CHAR_LENGTH(ArtistName) |
+-------------------------+
|                       3 |
+-------------------------+

Cependant, si nous avions utilisé le LENGTH() fonction, le résultat serait 6. C'est parce que les chaînes Unicode stockent 2 octets par caractère, et le LENGTH() renvoie la longueur mesurée en octets.