Dúvida função to_number

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Qua, 30 Abr 2008 3:16 pm

Socorro!!!!

Tenho uma coluna que está como char, e preciso transformá-la para number, porém tenho caracteres nesse campo como faço para retirá-los.
Pois no meu select eu preciso comparar esse campo com o de outra tabela.

:(
Mônica F
Localização: São Paulo

Mônica F.

Mensagemem Qua, 30 Abr 2008 4:41 pm

Vou explicar melhor....

tenho que comparar o campo num_nf (number) de uma tabela com o campo num_doc_origem (char) de outra tabela. Porém, como a coluna num_doc_origem estava como char, ela aceitou a inserção de dados que não deveria, pois por incrível que parece teve um usuário que inseriu a informaçaõ E-MAIL em vez de colocar o número da nota. Por isso que não consigo transformar o campo em number.
Apresenta o erro: ORA-01722: invalid Number

Realmente estou precisando de ajuda!!!

Valeu!

Mônica F.
Mônica F
Localização: São Paulo

Mônica F.

Mensagemem Qua, 30 Abr 2008 5:31 pm

vixiiiii... acho q você vai ter q varrer qual a nota q esta cadastrada errada... arrumar ela primeiro pra depois fazer esta alteracao

caso não queira fazer isto para não dar erro na sua funcao você pode tmb ao invez de transformar o char para number transformar o number para char...

trim(campo_char) = trim(to_char(campo_number))


vê ai se te serve...

abrçs
rodfbar
Localização: Batatais - SP

Mensagemem Seg, 05 Mai 2008 8:51 am

Vou tentar!!! muito obrigada!!!!
Mônica F
Localização: São Paulo

Mônica F.

Mensagemem Seg, 05 Mai 2008 11:33 am

Mônica,

Uma dica para buscar essas notas na base, seria testar se ela é number e, caso não seja, jogar numa tabela de log ou, concatenar o erro.

Neste exemplo abaixo, vai cair no OTHERS, pois existe uma letra no campo.

Código: Selecionar todos
DECLARE
  VNUMBER NUMBER;
BEGIN

  SELECT TO_NUMBER(NRO_SEQ)
   INTO VNUMBER
   FROM TESTE
  WHERE ID_PAC = 1
    AND ID_CONS = 2;
 
EXCEPTION 
  WHEN OTHERS THEN
    dbms_output.put_line(' Não é Number.');
END; 



qualquer coisa, manda ai.
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Mensagemem Seg, 19 Mai 2008 12:10 pm

Muito muito obrigada! você´s me ajudaram bastante!
Mônica F
Localização: São Paulo

Mônica F.

Mensagemem Ter, 20 Mai 2008 2:33 pm

CREATE OR REPLACE FUNCTION Retorna_Numericos(v_string IN CHAR)
RETURN CHAR
IS

BEGIN
RETURN REPLACE(TRANSLATE(v_string,
TRANSLATE(v_string, '0123456789', ' ') ,
LPAD(' ', LENGTH(v_string), ' ')
), ' ', '');
END;

Obs: Criando a procedure sempre que você tiver algum problema desse é só chama-la
___________
Thiago Vetis :-o
vetis
Localização: cariacica - es

Mensagemem Ter, 20 Mai 2008 2:34 pm

CREATE OR REPLACE FUNCTION Retorna_Numericos(v_string IN CHAR)
RETURN CHAR
IS

BEGIN
RETURN REPLACE(TRANSLATE(v_string,
TRANSLATE(v_string, '0123456789', ' ') ,
LPAD(' ', LENGTH(v_string), ' ')
), ' ', '');
END;

Obs: Criando a procedure sempre que você tiver algum problema desse é só chama-la
___________
Thiago Vetis :-o
vetis
Localização: cariacica - es



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes