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

Función TRIM() en Oracle

En Oracle, el TRIM() La función le permite recortar caracteres de los lados de una cadena.

Puede recortar los caracteres iniciales, finales o ambos.

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í:

TRIM([ { { LEADING | TRAILING | BOTH }
         [ trim_character ]
       | trim_character
       }
       FROM 
     ]
     trim_source
    )

Ambos trim_character y trim_source puede ser VARCHAR2 o cualquier tipo de datos que se pueda convertir implícitamente a VARCHAR2 .

Ejemplo

Aquí hay un ejemplo simple para demostrarlo:

SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;

Resultado:

   TRIM('.'FROM'...CAT...') 
___________________________ 
Cat                        

En este caso, el carácter especificado (. ) se eliminó de ambos lados de la cuerda.

Se quitó de ambos lados porque no especifiqué de qué lado quitarlo.

Podemos obtener el mismo resultado incluyendo BOTH palabra clave:

SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;

Resultado:

   TRIM(BOTH'.'FROM'...CAT...') 
_______________________________ 
Cat                            

Recortar personajes principales

Aquí está de nuevo, pero con solo los caracteres principales eliminados:

SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;

Resultado:

   TRIM(LEADING'.'FROM'...CAT...') 
__________________________________ 
Cat...                            

Recortar caracteres finales

Y aquí está con solo los caracteres finales eliminados:

SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;

Resultado:

   TRIM(TRAILING'.'FROM'...CAT...') 
___________________________________ 
...Cat                             

Carácter predeterminado

En este ejemplo, no especifico el carácter para recortar, por lo tanto, recorta el espacio en blanco:

SELECT TRIM(' Cat ')
FROM DUAL;

Resultado:

   TRIM('CAT') 
______________ 
Cat           

No es tan fácil ver el efecto cuando se recortan los espacios en blanco de ambos lados.

Aquí hay otro ejemplo que hace que sea más fácil ver que el espacio en blanco se eliminó de ambos lados:

SELECT 
    'My' || ' Fat ' || 'Cat',
    'My' || TRIM(' Fat ') || 'Cat'
FROM DUAL;

Resultado:

   'MY'||'FAT'||'CAT'    'MY'||TRIM('FAT')||'CAT' 
_____________________ ___________________________ 
My Fat Cat            MyFatCat                   

Números

El carácter de cadena y recorte puede ser VARCHAR2 o cualquier tipo de datos que se pueda convertir implícitamente a VARCHAR2 , por lo que podemos pasar un número como el siguiente. Sin embargo, el valor de retorno es VARCHAR2 .

SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Resultado:

   TRIM(LEADING0FROM007) 
________________________ 
7                      

Aquí está con un número diferente recortado:

SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Resultado:

   TRIM(LEADING1FROM117) 
________________________ 
7                        

Valores nulos

Si la cadena o el carácter de recorte es null el resultado es null :

SET NULL 'null';

SELECT 
    TRIM(null FROM '...Cat...'),
    TRIM(BOTH FROM null),
    TRIM(null FROM null)
FROM DUAL;

Resultado:

   TRIM(NULLFROM'...CAT...')    TRIM(BOTHFROMNULL)    TRIM(NULLFROMNULL) 
____________________________ _____________________ _____________________ 
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 carácter de recorte da como resultado null :

SET NULL 'null';

SELECT TRIM('' FROM '   Cat')
FROM DUAL;

Resultado:

   TRIM(''FROM'CAT') 
____________________ 
null                

Pero agregar un solo espacio a la cadena vacía cambia eso y recorta los espacios en blanco de la cadena:

SET NULL 'null';

SELECT TRIM(' ' FROM '   Cat')
FROM DUAL;

Resultado:

   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Recuento de argumentos incorrecto

Llamando a TRIM() sin pasar ningún argumento devuelve un error:

SELECT TRIM()
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT TRIM()
FROM DUAL
Error at Command Line : 1 Column : 13
Error report -
SQL Error: ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:

Y pasar el número incorrecto de argumentos da como resultado un error:

SELECT TRIM(' Cat ', 2)
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT TRIM(' Cat ', 2)
FROM DUAL
Error at Command Line : 1 Column : 20
Error report -
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:

Ver también RTRIM() y LTRIM() para funciones más específicas para recortar cada lado de una cuerda. Estas funciones también le permiten recortar varios caracteres de la cadena.