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;| vacia | nula |
|---|---|
| 0 | NULL |
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_cafe | chars_cafe | bytes_nino | chars_nino |
|---|---|---|---|
| 5 | 4 | 5 | 4 |
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;| nombre | bytes | caracteres |
|---|---|---|
| iPhone 15 Pro | 13 | 13 |
| MacBook Air M2 | 14 | 14 |
| AirPods Pro | 11 | 11 |
| iPad Air | 8 | 8 |
| Apple Watch Series 9 | 20 | 20 |
Filtrar por longitud
-- Productos con nombre corto (menos de 12 caracteres)
SELECT nombre, LENGTH(nombre) AS longitud
FROM productos
WHERE LENGTH(nombre) < 12;| nombre | longitud |
|---|---|
| AirPods Pro | 11 |
| iPad Air | 8 |
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;| entero | decimal_num | precio |
|---|---|---|
| 5 | 4 | 7 |
En el siguiente artículo veremos CHAR_LENGTH, la versión que cuenta caracteres en lugar de bytes.
Escrito por Eduardo Lázaro
