En Oracle, el RTRIM()
La función le permite recortar la parte derecha de una cadena. De forma predeterminada, recorta los espacios en blanco, pero opcionalmente puede especificar un carácter o caracteres diferentes para recortar.
Sintaxis
La sintaxis es así:
RTRIM(char [, set ])
Donde char
y set
puede ser cualquiera de los tipos de datos CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
o NCLOB
.
RTRIM
elimina del extremo derecho de char
todos los caracteres contenidos en set
. Si no especifica set
, entonces por defecto es un solo espacio en blanco.
Ejemplo
He aquí un ejemplo:
SELECT RTRIM('Cat ')
FROM DUAL;
Resultado:
RTRIM('CAT') _______________ Cat
Aquí, no especifiqué qué carácter/es recortar, por lo que cada espacio en blanco se recortó de la parte derecha de la cadena.
No es fácil ver el efecto del ejemplo anterior.
Aquí hay otro ejemplo, con la cadena concatenada con otra cadena, mientras se compara la salida con la cadena original (sin recortar):
SELECT 'Cat ' || 'Food'
FROM DUAL
UNION ALL
SELECT RTRIM('Cat ') || 'Food'
FROM DUAL;
Resultado:
'CAT'||'FOOD' ________________ Cat Food CatFood
Especifique un carácter
En este ejemplo, especifico un carácter para recortar. Esto hace que sea más fácil ver el efecto:
SELECT RTRIM('...Cat...', '.')
FROM DUAL;
Resultado:
RTRIM('...CAT...','.') _________________________ ...Cat
Entonces podemos ver que el carácter fue recortado del lado derecho pero no del lado izquierdo. Para recortar el lado izquierdo, use LTRIM()
o TRIM()
.
Tenga en cuenta que RTRIM()
solo recorta el/los personaje/s en la configuración hasta que haya un personaje que no esté en el conjunto. He aquí un ejemplo de lo que quiero decir:
SELECT RTRIM('Cat...B...', '.')
FROM DUAL;
Resultado:
RTRIM('CAT...B...','.') __________________________ Cat...B
Sin embargo, si incluimos B
en el conjunto, obtenemos un resultado diferente:
SELECT RTRIM('Cat...B...', '.B')
FROM DUAL;
Resultado:
RTRIM('CAT...B...','.B') ___________________________ Cat
Ejemplo de base de datos
Aquí hay un ejemplo de recortar la parte derecha de los valores en una columna de base de datos:
SELECT
country_name,
RTRIM(country_name, 'an') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY;
Resultado:
COUNTRY_NAME TRIMMED _______________ ___________ Argentina Argenti Australia Australi Belgium Belgium Brazil Brazil Canada Canad
Valores nulos
Si algún argumento es null
el resultado es null
:
SET NULL 'null';
SELECT
RTRIM(null, 3),
RTRIM('Cat ', null),
RTRIM(null, null)
FROM DUAL;
Resultado:
RTRIM(NULL,3) RTRIM('CAT',NULL) RTRIM(NULL,NULL) ________________ ____________________ ___________________ null null null
De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null
ocurre como resultado de un SQL SELECT
declaración.
Sin embargo, puede usar SET NULL
para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null
debe ser devuelto.
Recortar cadenas vacías
Pasar una cadena vacía como segundo argumento da como resultado null
:
SET NULL 'null';
SELECT RTRIM('Cat ', '')
FROM DUAL;
Resultado:
RTRIM('CAT','') __________________ null
Pero agregar un solo espacio a la cadena vacía cambia eso y recorta los espacios en blanco de la derecha de la cadena:
SELECT RTRIM('Cat ', ' ')
FROM DUAL;
Resultado:
RTRIM('CAT','') __________________ Cat
Recuento de argumentos incorrecto
Llamando a RTRIM()
sin pasar ningún argumento devuelve un error:
SELECT RTRIM()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT RTRIM() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Y pasar el número incorrecto de argumentos da como resultado un error:
SELECT RTRIM('Cat', 1, '>')
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT RTRIM('Cat', 1, '>') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: