RTRIM
La función RTRIM elimina los espacios en blanco del final (el lado derecho) de una cadena, conservando intactos los espacios del inicio y el resto del texto. Su nombre proviene de "right trim" y es la función simétrica de LTRIM.
De las tres funciones de recorte, RTRIM es seguramente la que más se utiliza en la práctica, y la razón tiene que ver con cómo MySQL almacena ciertos tipos de datos y cómo compara las cadenas. Los espacios al final suelen aparecer sin que nadie los teclee de forma deliberada: provienen del relleno de las columnas CHAR, de exportaciones de hojas de cálculo o de campos de longitud fija de sistemas antiguos. En este artículo veremos su sintaxis, el caso de uso más importante (las columnas CHAR), y un detalle de las comparaciones en MySQL que explica cuándo RTRIM es imprescindible y cuándo no.
Sintaxis
RTRIM recibe un único argumento, la cadena a limpiar, y devuelve la versión sin espacios finales. No admite caracteres ni opciones adicionales.
RTRIM(cadena)Equivale a TRIM con la opción TRAILING, con la salvedad de que RTRIM solo actúa sobre espacios, mientras que TRIM(TRAILING 'x' FROM ...) permite eliminar cualquier carácter del final.
Ejemplo básico
El comportamiento se ve mejor envolviendo el resultado entre corchetes con CONCAT, ya que los espacios no son visibles por sí solos. En este caso, los espacios del inicio se conservan y solo desaparecen los del final:
SELECT CONCAT('[', RTRIM(' Hola mundo '), ']') AS resultado;| resultado |
|---|
| [ Hola mundo] |
Caso de uso: columnas CHAR
El motivo principal por el que RTRIM es tan útil son las columnas de tipo CHAR. A diferencia de VARCHAR, una columna CHAR(10) siempre ocupa diez caracteres: si guardas 'ABC', MySQL lo rellena internamente con siete espacios hasta completar la longitud. Aunque al leerlo MySQL normalmente recorta ese relleno, en concatenaciones o exportaciones puede aflorar. El siguiente ejemplo lo muestra de forma explícita:
CREATE TABLE test_char (
codigo CHAR(10),
nombre VARCHAR(50)
);
INSERT INTO test_char VALUES ('ABC', 'Producto A');Al concatenar el código sin recortarlo, se ven los espacios de relleno; con RTRIM desaparecen:
SELECT
CONCAT('[', codigo, ']') AS con_relleno,
CONCAT('[', RTRIM(codigo), ']') AS sin_relleno
FROM test_char;| con_relleno | sin_relleno |
|---|---|
| [ABC ] | [ABC] |
Eliminamos la tabla de prueba al terminar:
DROP TABLE test_char;RTRIM y las comparaciones
Aquí conviene conocer un comportamiento de MySQL que sorprende a mucha gente: en las comparaciones con el operador =, MySQL ignora los espacios finales. Es decir, 'Hola ' y 'Hola' se consideran iguales sin necesidad de recortar nada, como demuestra este ejemplo:
-- Los espacios al final pueden causar problemas en comparaciones
SELECT RTRIM('Hola ') = 'Hola' AS son_iguales;| son_iguales |
|---|
| 1 |
El detalle clave, y a la vez el motivo por el que RTRIM sigue siendo importante, es que esta regla solo aplica al operador =. El operador LIKE sí distingue los espacios finales: 'Hola ' LIKE 'Hola' devuelve falso. Por eso, cuando hagas búsquedas con LIKE sobre datos que puedan tener espacios al final, normalizar con RTRIM (o limpiar los datos en origen) es lo que evita resultados que aparentemente deberían coincidir y no lo hacen.
Resumen: LTRIM, RTRIM y TRIM
Para situar RTRIM entre sus funciones hermanas, esta tabla resume qué elimina cada una y si admite caracteres distintos del espacio:
| Función | Elimina espacios | Otros caracteres |
|---|---|---|
LTRIM(cadena) | Del inicio | No |
RTRIM(cadena) | Del final | No |
TRIM(cadena) | De ambos lados | No (sin argumentos) |
TRIM(BOTH 'x' FROM cadena) | De ambos lados | Sí, el carácter especificado |
Errores comunes
El error más habitual es pensar que RTRIM resuelve cualquier problema de comparación con espacios. Como acabamos de ver, con el operador = los espacios finales ya se ignoran, así que recortar ahí no cambia nada; el verdadero valor de RTRIM aparece con LIKE, con la ordenación o al concatenar cadenas.
El otro malentendido típico es esperar que elimine tabulaciones o saltos de línea finales. RTRIM solo trata el espacio normal, de modo que esos caracteres invisibles permanecen. Para eliminarlos hay que usar TRIM con el carácter concreto o combinar con REPLACE.
Cuándo usar RTRIM
RTRIM es la elección adecuada cuando necesitas quitar el relleno de columnas CHAR, preparar datos para búsquedas con LIKE o limpiar valores antes de concatenarlos, y solo te interesa el lado derecho de la cadena. Si el problema afecta a ambos extremos, TRIM es más completo; y si lo que sobra no son espacios sino otros caracteres, TRIM con un carácter específico es la opción correcta.
En el siguiente artículo veremos SUBSTRING, que permite extraer porciones concretas de una cadena.
Escrito por Eduardo Lázaro
