Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função TRIM() no Oracle


No Oracle, o TRIM() A função permite aparar caracteres dos lados de uma string.

Você pode cortar caracteres iniciais, caracteres finais ou ambos.

Por padrão, ele apara o espaço em branco, mas você pode especificar opcionalmente um caractere ou caracteres diferentes para aparar.

Sintaxe


A sintaxe fica assim:
TRIM([ { { LEADING | TRAILING | BOTH }
         [ trim_character ]
       | trim_character
       }
       FROM 
     ]
     trim_source
    )

Ambos trim_character e trim_source pode ser VARCHAR2 ou qualquer tipo de dados que possa ser convertido implicitamente em VARCHAR2 .

Exemplo


Aqui está um exemplo simples para demonstrar:
SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;

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

Neste caso, o caractere especificado (. ) foi removido de ambos os lados da corda.

Foi removido de ambos os lados porque não especifiquei de qual lado removê-lo.

Podemos obter o mesmo resultado incluindo o BOTH palavra-chave:
SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;

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

Aparar personagens principais


Aqui está novamente, mas com apenas os personagens principais removidos:
SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;

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

Aparar caracteres à direita


E aqui está com apenas os caracteres à direita removidos:
SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;

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

Caractere padrão


Neste exemplo, não especifico o caractere a ser aparado, portanto, ele apara o espaço em branco:
SELECT TRIM(' Cat ')
FROM DUAL;

Resultado:
   TRIM('CAT') 
______________ 
Cat           

Não é tão fácil ver o efeito ao aparar espaços em branco de ambos os lados.

Aqui está outro exemplo que torna mais fácil ver que o espaço em branco foi removido de ambos os 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


A string e o caractere de corte podem ser VARCHAR2 ou qualquer tipo de dados que possa ser convertido implicitamente em VARCHAR2 , para que possamos passar um número como o seguinte. No entanto, o valor de retorno é VARCHAR2 .
SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Resultado:
   TRIM(LEADING0FROM007) 
________________________ 
7                      

Aqui está com um número diferente sendo aparado:
SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Resultado:
   TRIM(LEADING1FROM117) 
________________________ 
7                        

Valores nulos


Se a string ou o caractere de corte for null o resultado é 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                 

Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que null ocorre como resultado de um SQL SELECT demonstração.

No entanto, você pode usar SET NULL para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null deve ser devolvido.

Cortando Strings Vazias


Passar uma string vazia como o caractere de corte resulta em null :
SET NULL 'null';

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

Resultado:
   TRIM(''FROM'CAT') 
____________________ 
null                

Mas adicionar um único espaço à string vazia muda isso e corta todos os espaços em branco da string:
SET NULL 'null';

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

Resultado:
   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Contagem incorreta de argumentos


Chamando TRIM() sem passar nenhum argumento retorna um erro:
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:

E passar o número errado de argumentos resulta em um erro:
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:

Veja também RTRIM() e LTRIM() para funções mais direcionadas para aparar cada lado de uma string. Essas funções também permitem cortar vários caracteres da string.