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_alineado | precio |
|---|---|
| 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;| nombre | stock | barra |
|---|---|---|
| iPhone 15 Pro | 50 | [########## ] |
| MacBook Air M2 | 30 | [###### ] |
| AirPods Pro | 100 | [####################] |
| iPad Air | 25 | [##### ] |
| Apple Watch Series 9 | 45 | [######### ] |
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ón | Relleno | Uso típico |
|---|---|---|
LPAD | Por la izquierda | Números con ceros a la izquierda (00042), alinear a la derecha |
RPAD | Por la derecha | Texto 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
