Bom, todos que trabalham com oracle, já tiveram que alguma vez usar as funções de complementação de caracteres (lpad/rpad). Ela basicamente serve para preencher um variável ou coluna string com um caracter até obter o tamanho desejado, como no exemplo abaixo:
SQL> select lpad('alguma coisa',20,'x') from dual
2 /
LPAD('ALGUMACOISA',2
--------------------
xxxxxxxxalguma coisa
Mas o que pouca gente sabe, é que dependendo do parâmetro de entrada destas funções, ela pode retornar alguns resultados diferentes do desejado, como quando o primeiro parâmetro passado for nulo. Neste caso, a função retorna nula, como se pode diagnosticar no exemplo abaixo:
SQL> select lpad(null,20,'x') from dual
2 /
L
-
Ou seja, eu pedi para função preencher até 20 caracteres com x, mas ela me retornou nula!!!
Portanto, como geralmente o parâmetro de entrada é usado com alguma coluna do banco, sugiro usar a função nvl para se certificar que a função, mesmo no caso da coluna ser nula, retorne o campo formatado conforme desejado. Observe:
SQL> select lpad(nvl(null,'a'),20,'x') from dual
2 /
LPAD(NVL(NULL,'A'),2
--------------------
xxxxxxxxxxxxxxxxxxxa
o mesmo vale para o parâmetro de complemento, como no exemplo abaixo:
SQL> select lpad('a',20,null) from dual
2 /
L
-
Ou seja, se o parâmetro for nulo, também a função irá retornar nulo...
Há, muito importante, se tiver que colocar um número x de zeros ou qualquer outro caracter repetido, não repita o valor, por favor, use lpad/rpad, observe:
SQL> select lpad('0',20,'0') from dual
2 /
LPAD('0',20,'0')
--------------------
00000000000000000000
quarta-feira, 14 de outubro de 2009
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário