sql >> Base de Datos >  >> RDS >> Oracle

Función RTRIM() en Oracle

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: