Contenido de esta guía
Qué calcula LENGTH
LENGTH mide la longitud de un valor. En PostgreSQL y SQLite, aplicado a texto, normalmente devuelve el número de caracteres. En MySQL, LENGTH devuelve bytes; para contar caracteres se utiliza CHAR_LENGTH o CHARACTER_LENGTH.
Esta diferencia importa con letras acentuadas, emojis y otros caracteres multibyte. Una consulta puede producir el mismo resultado con texto ASCII y cambiar cuando aparecen datos internacionales.
Sintaxis básica
LENGTH(texto)CHAR_LENGTH(texto)Si el argumento es NULL, el resultado es NULL. Una cadena vacía tiene longitud cero.
Ejemplo guiado
Queremos localizar los nombres de producto más largos:
SELECT nombre,
LENGTH(nombre) AS caracteres
FROM productos
ORDER BY caracteres DESC, nombre
LIMIT 6;| nombre | caracteres |
|---|---|
| Portátil Pro | 12 |
| Auriculares | 11 |
| Cable USB-C | 11 |
| Monitor 24 | 10 |
| Monitor 27 | 10 |
| Disco SSD | 9 |
Qué resuelve cada parte
LENGTH(nombre)calcula una longitud por fila.- El alias
caracterespermite leer y ordenar el cálculo. ORDER BY caracteres DESCcoloca primero los textos más largos.- El segundo criterio,
nombre, hace estable el orden cuando existe un empate.
No confundas caracteres y bytes. El texto 'Ratón' tiene cinco caracteres. En UTF-8 ocupa más de cinco bytes porque la letra acentuada utiliza una representación multibyte.
Error frecuente
Usar LENGTH de MySQL como contador universal de caracteres
SELECT LENGTH('Ratón'), CHAR_LENGTH('Ratón');Las dos columnas pueden diferir: una cuenta bytes y la otra caracteres. Elige la función según la pregunta que estás respondiendo.
Comprueba lo aprendido
Cuenta letras en los departamentos
Muestra departamento y su longitud con el alias caracteres. Evita filas repetidas y ordena de mayor a menor longitud.
Solución razonada
SELECT DISTINCT departamento, LENGTH(departamento) AS caracteres
FROM empleados
ORDER BY caracteres DESC, departamento;DISTINCT elimina los departamentos repetidos después de calcular las columnas seleccionadas.
Distingue caracteres de bytes en SQLite
Comprueba cuántos caracteres y cuántos bytes ocupa el texto 'Ratón' en la base de práctica. Devuelve las columnas caracteres y bytes usando LENGTH y OCTET_LENGTH.
LENGTH(texto) cuenta caracteres del texto.OCTET_LENGTH(texto) mide bytes.Solución razonada
SELECT LENGTH('Ratón') AS caracteres,
OCTET_LENGTH('Ratón') AS bytes;En la base SQLite del sitio devuelve 5 caracteres y 6 bytes. La ó cuenta como un carácter, pero ocupa más de un byte en UTF-8. En MySQL, la comparación equivalente se hace normalmente con CHAR_LENGTH para caracteres y LENGTH para bytes.
Diferencias entre motores
PostgreSQL distingue length para caracteres y octet_length para bytes. SQLite ofrece length para caracteres de texto y octet_length en versiones modernas. MySQL utiliza LENGTH para bytes y CHAR_LENGTH para caracteres. Comprueba siempre qué unidad necesita tu regla.
Qué debes recordar
- La palabra “longitud” puede significar caracteres o bytes.
- En MySQL, usa
CHAR_LENGTHpara contar caracteres. NULLproduceNULL; la cadena vacía produce cero.- Un alias hace más claro el cálculo y su ordenación.
Conceptos relacionados
Fuentes técnicas consultadas
Se utilizaron para verificar qué unidad devuelve cada motor.