CHAR_LENGTH

La función CHAR_LENGTH (o su alias CHARACTER_LENGTH) devuelve la longitud de una cadena en caracteres, independientemente de cuántos bytes ocupe cada carácter.

Sintaxis

CHAR_LENGTH(cadena)
-- Alias:
CHARACTER_LENGTH(cadena)

Diferencia con LENGTH

SELECT
    CHAR_LENGTH('España') AS caracteres,
    LENGTH('España') AS bytes;
caracteresbytes
67

España tiene 6 caracteres pero 7 bytes porque la ñ ocupa 2 bytes en UTF-8.

SELECT
    CHAR_LENGTH('日本語') AS caracteres,
    LENGTH('日本語') AS bytes;
caracteresbytes
39

Cada carácter japonés ocupa 3 bytes en UTF-8.

Cuándo usar CHAR_LENGTH

Usa CHAR_LENGTH cuando necesites contar caracteres visibles. Usa LENGTH solo cuando necesites el tamaño en bytes (almacenamiento, transmisión).

-- Validar longitud mínima de nombres
SELECT nombre, CHAR_LENGTH(nombre) AS caracteres
FROM clientes
WHERE CHAR_LENGTH(nombre) < 5;

Longitud de nombres de clientes

SELECT nombre, apellidos,
       CHAR_LENGTH(nombre) AS len_nombre,
       CHAR_LENGTH(apellidos) AS len_apellidos
FROM clientes
ORDER BY len_apellidos DESC
LIMIT 5;
nombreapellidoslen_nombrelen_apellidos
CarlosRodríguez Martín617
PedroFernández Castro516
AnaMartínez Ruiz314
JavierMoreno Díaz611
LauraLópez Sánchez514

Truncar con indicador

SELECT
    nombre,
    CASE
        WHEN CHAR_LENGTH(nombre) > 10
        THEN CONCAT(LEFT(nombre, 10), '...')
        ELSE nombre
    END AS nombre_corto
FROM productos
LIMIT 5;
nombrenombre_corto
iPhone 15 ProiPhone 15 ...
MacBook Air M2MacBook Ai...
AirPods ProAirPods Pr...
iPad AiriPad Air
Apple Watch Series 9Apple Watc...

Estadísticas de longitud

SELECT
    MIN(CHAR_LENGTH(nombre)) AS minima,
    MAX(CHAR_LENGTH(nombre)) AS maxima,
    AVG(CHAR_LENGTH(nombre)) AS promedio
FROM productos;

CHAR_LENGTH con NULL y vacío

SELECT
    CHAR_LENGTH(NULL) AS nulo,
    CHAR_LENGTH('') AS vacio,
    CHAR_LENGTH(' ') AS espacio;
nulovacioespacio
NULL01

En el siguiente artículo veremos LEFT para extraer caracteres desde la izquierda.

Escrito por Eduardo Lázaro