sql >> Base de Datos >  >> RDS >> Mysql

¿Qué es CHAR_LENGTH() en MySQL?

En MySQL, el CHAR_LENGTH() La función devuelve la longitud de una cadena, medida en caracteres. MySQL también tiene CHARACTER_LENGTH() , que es un sinónimo de CHAR_LENGTH() .

He aquí un ejemplo:

SELECT CHAR_LENGTH('Lit');

Y aquí está el resultado:

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

Blancos finales

Tenga en cuenta que CHAR_LENGTH() incluye espacios en blanco al final (por ejemplo, espacios al final de la cadena) en sus cálculos.

Entonces, si agregamos un espacio al final del ejemplo anterior:

SELECT CHAR_LENGTH('Lit');

Aquí está el resultado:

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

Pero siempre podemos eliminar ese espacio final agregando TRIM() función en la mezcla:

SELECT CHAR_LENGTH(TRIM('Lit '));

Aquí está el resultado:

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

Blancos iniciales

Es lo mismo con los espacios en blanco iniciales. Entonces, si agregamos un espacio al inicio de la cadena en su lugar:

SELECT CHAR_LENGTH('Lit');

Obtenemos el mismo resultado:

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

Tipos de datos

No importa en qué tipo de datos se almacene la cadena, aún devolverá los mismos resultados. Esto contrasta con LENGTH() función, que devolverá el doble de caracteres en los casos en que los datos se almacenen como una cadena Unicode.

En el siguiente ejemplo, la columna ArtistName usa varchar(255) :

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

Aquí está el resultado:

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

Y si modificamos el ArtistName columna para usar Unicode:

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

Y ejecute la misma consulta de nuevo:

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

Seguimos obteniendo el mismo resultado:

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

Sin embargo, si hubiéramos usado LENGTH() función, el resultado sería 6. Esto se debe a que las cadenas Unicode almacenan 2 bytes por carácter, y el LENGTH() función devuelve la longitud medida en bytes.