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.