LENGTH

La función LENGTH devuelve la longitud de una cadena en bytes. Para caracteres multibyte (como tildes o emojis), usa CHAR_LENGTH.

Sintaxis

LENGTH(cadena)

Ejemplo básico

SELECT LENGTH('Hola mundo') AS longitud;
longitud
10
SELECT LENGTH('') AS vacia, LENGTH(NULL) AS nula;
vacianula
0NULL

LENGTH vs CHAR_LENGTH

Con caracteres ASCII (1 byte cada uno), ambas funciones dan el mismo resultado. Con caracteres UTF-8 multibyte, difieren:

SELECT
    LENGTH('café') AS bytes_cafe,
    CHAR_LENGTH('café') AS chars_cafe,
    LENGTH('niño') AS bytes_nino,
    CHAR_LENGTH('niño') AS chars_nino;
bytes_cafechars_cafebytes_ninochars_nino
5454

La é y la ñ ocupan 2 bytes en UTF-8, pero son 1 carácter.

Longitud de nombres de productos

SELECT nombre, LENGTH(nombre) AS bytes, CHAR_LENGTH(nombre) AS caracteres
FROM productos
LIMIT 5;
nombrebytescaracteres
iPhone 15 Pro1313
MacBook Air M21414
AirPods Pro1111
iPad Air88
Apple Watch Series 92020

Filtrar por longitud

-- Productos con nombre corto (menos de 12 caracteres)
SELECT nombre, LENGTH(nombre) AS longitud
FROM productos
WHERE LENGTH(nombre) < 12;
nombrelongitud
AirPods Pro11
iPad Air8

Ordenar por longitud

SELECT nombre, LENGTH(nombre) AS longitud
FROM productos
ORDER BY LENGTH(nombre) DESC
LIMIT 5;

Validar datos

-- Clientes con email largo
SELECT nombre, email, LENGTH(email) AS longitud_email
FROM clientes
WHERE LENGTH(email) > 25
ORDER BY LENGTH(email) DESC;

LENGTH con números

LENGTH convierte números a cadena automáticamente:

SELECT
    LENGTH(12345) AS entero,
    LENGTH(3.14) AS decimal_num,
    LENGTH(1299.99) AS precio;
enterodecimal_numprecio
547

En el siguiente artículo veremos CHAR_LENGTH, la versión que cuenta caracteres en lugar de bytes.

Escrito por Eduardo Lázaro