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

¿Qué es LONGITUD () en MySQL?

Una de las muchas funciones en MySQL es LENGTH() función, que devuelve la longitud de una cadena, medida en bytes.

Ejemplo:

SELECT LENGTH('Lit');

Resultado:

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

Este es un ejemplo simple y el resultado es el mismo que si hubiéramos usado CHAR_LENGTH() función. Sin embargo, el LENGTH() La función puede devolver resultados diferentes, según el tipo de datos.

Tipos de datos

Cuando consulta una base de datos, el LENGTH() La función puede devolver un resultado diferente, según el tipo de datos. Las cadenas Unicode devuelven el doble de bytes. Las cadenas UTF-8 pueden variar.

Este es un ejemplo del uso de UTF-8:

SELECT LENGTH(_utf8 '€');

Resultados:

+---------------------+
| LENGTH(_utf8 '€')   |
+---------------------+
|                   3 |
+---------------------+

En este caso, el símbolo del euro utiliza 3 bytes.

En el siguiente ejemplo, consultamos una base de datos. En este caso, el ArtistName la columna usa varchar(255) tipo de datos:

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

Así que el resultado se ve así:

+--------------------+
| LENGTH(ArtistName) |
+--------------------+
|                  3 |
+--------------------+

Sin embargo, si cambiamos la columna a ucs2 , cada carácter estará representado por un código Unicode de 2 bytes y, por lo tanto, el resultado será diferente.

Para demostrarlo, podemos modificar la tabla de esta manera:

SELECT LENGTH(ArtistName) 
ALTER TABLE Artists 
MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;

Ahora, si lo consultamos de nuevo:

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

Resultado:

+--------------------+
| LENGTH(ArtistName) |
+--------------------+
|                  6 |
+--------------------+

Blancos finales

El LENGTH() La función cuenta los espacios en blanco finales (como los espacios al final de la cadena). Entonces, si agregamos un espacio al final del primer ejemplo, obtenemos el siguiente resultado:

SELECT LENGTH('Lit ');

Resultado:

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

Blancos iniciales

Obtenemos el mismo resultado con espacios en blanco iniciales (por ejemplo, espacios al comienzo de la cadena):

SELECT LENGTH(' Lit');

Resultado:

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

Transact-SQL (para SQL Server, Azure) tiene una función similar, pero en T-SQL se llama  DATALENGTH() .