Funciones de texto · guía práctica

LENGTH

Mide la longitud de un texto, pero la unidad no es igual en todos los motores. Aprende a contar sin equivocarte con tildes y caracteres multibyte.

Lectura: 6–8 minEjemplo comprobadoPráctica con pistas
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

PostgreSQL y SQLite
LENGTH(texto)
MySQL cuando quieres caracteres
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:

SQL
SELECT nombre,
       LENGTH(nombre) AS caracteres
FROM productos
ORDER BY caracteres DESC, nombre
LIMIT 6;
Productos ordenados por número de caracteres
nombrecaracteres
Portátil Pro12
Auriculares11
Cable USB-C11
Monitor 2410
Monitor 2710
Disco SSD9

Qué resuelve cada parte

  1. LENGTH(nombre) calcula una longitud por fila.
  2. El alias caracteres permite leer y ordenar el cálculo.
  3. ORDER BY caracteres DESC coloca primero los textos más largos.
  4. 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

MySQL
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

Básica · apoyo gradual

Cuenta letras en los departamentos

Muestra departamento y su longitud con el alias caracteres. Evita filas repetidas y ordena de mayor a menor longitud.

Intermedia · diferencia por motor

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.

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_LENGTH para contar caracteres.
  • NULL produce NULL; 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.