RPAD

La función RPAD rellena una cadena por la derecha con un carácter o texto específico hasta alcanzar la longitud deseada. Su nombre viene de "Right Pad" (rellenar por la derecha).

Es la función complementaria de LPAD, que rellena por la izquierda. Mientras que LPAD se usa típicamente para alinear números a la derecha (como rellenar con ceros), RPAD se usa para alinear texto a la izquierda o para crear campos de ancho fijo.

Sintaxis

RPAD(cadena, longitud, relleno)

La función recibe tres parámetros:

  • cadena: el texto original que quieres rellenar
  • longitud: la longitud total que debe tener el resultado
  • relleno: el carácter o caracteres que se usarán para completar

Si la cadena original ya tiene la longitud indicada o es más larga, RPAD la trunca al tamaño especificado. Es decir, RPAD siempre devuelve una cadena de exactamente la longitud indicada.

Ejemplo básico

El caso más simple es rellenar una cadena corta con puntos:

SELECT RPAD('Hola', 10, '.') AS resultado;
resultado
Hola......

Hola tiene 4 caracteres, y queremos 10 en total, así que se añaden 6 puntos a la derecha.

SELECT RPAD('MySQL', 10, '-') AS resultado;
resultado
MySQL-----

Alinear texto en formato de tabla

Uno de los usos más prácticos de RPAD es crear una alineación visual cuando presentas datos en formato texto. Al rellenar los nombres hasta un ancho fijo, los precios quedan alineados en columna:

SELECT
    RPAD(nombre, 25, '.') AS nombre_alineado,
    precio
FROM productos
LIMIT 5;
nombre_alineadoprecio
iPhone 15 Pro............1299.99
MacBook Air M2...........1199.99
AirPods Pro..............249.99
iPad Air.................599.99
Apple Watch Series 9.....399.99

Esto es especialmente útil cuando generas reportes en texto plano, logs, o exportaciones que necesitan columnas de ancho fijo.

Crear barras de progreso visuales

Combinando RPAD con REPEAT, puedes crear representaciones visuales del stock o cualquier valor numérico. La idea es generar una barra de caracteres proporcional al valor, y luego rellenar con espacios hasta un ancho fijo:

SELECT
    nombre,
    stock,
    CONCAT('[', RPAD(REPEAT('#', LEAST(stock / 5, 20)), 20, ' '), ']') AS barra
FROM productos
LIMIT 5;
nombrestockbarra
iPhone 15 Pro50[########## ]
MacBook Air M230[###### ]
AirPods Pro100[####################]
iPad Air25[##### ]
Apple Watch Series 945[######### ]

Aquí REPEAT genera los caracteres # proporcionalmente al stock, y RPAD se encarga de que todas las barras tengan exactamente 20 caracteres de ancho, rellenando con espacios las posiciones vacías.

Campos de ancho fijo para exportación

Algunos sistemas antiguos o formatos de archivo (como los archivos de posición fija usados en banca) requieren campos con una longitud exacta. RPAD es perfecto para esto:

SELECT CONCAT(
    RPAD(IFNULL(nombre, ''), 20, ' '),
    RPAD(IFNULL(apellidos, ''), 25, ' '),
    LPAD(telefono, 12, ' ')
) AS registro_fijo
FROM clientes
LIMIT 3;

Cada campo ocupa exactamente el mismo número de caracteres en cada fila, independientemente del contenido real.

Comportamiento cuando la cadena es más larga

Si la cadena original ya supera la longitud indicada, RPAD la trunca en lugar de rellenarla. Esto puede ser útil o peligroso, dependiendo de tu intención:

SELECT RPAD('MySQL Tutorial Completo', 10, '.') AS resultado;
resultado
MySQL Tuto

Se cortaron los últimos caracteres para ajustarse a la longitud de 10. Si no quieres truncar, verifica primero la longitud con CHAR_LENGTH.

Relleno con múltiples caracteres

El relleno puede ser más de un carácter. MySQL repite el patrón y lo corta cuando alcanza la longitud deseada:

SELECT RPAD('X', 10, 'ab') AS resultado;
resultado
Xababababa

RPAD con NULL

Si cualquiera de los argumentos es NULL, el resultado es NULL:

SELECT RPAD(NULL, 10, '.') AS resultado;
resultado
NULL

LPAD vs RPAD

Ambas funciones son simétricas pero se usan en contextos diferentes:

FunciónRellenoUso típico
LPADPor la izquierdaNúmeros con ceros a la izquierda (00042), alinear a la derecha
RPADPor la derechaTexto con espacios o puntos a la derecha, campos de ancho fijo, alinear a la izquierda

La regla general es: LPAD para números, RPAD para texto.

En el siguiente artículo veremos REVERSE para invertir una cadena.

Escrito por Eduardo Lázaro