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()
.