Campo varchar com valor numérico

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
leonchacal
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 12
Registrado em: Seg, 18 Ago 2014 3:51 pm

Bom dia a todos,

Estou com a seguinte dúvida:
Eu possou um campo varchar2 na tabela e a minha variavel também é varchar2, sendo que, alguns valores do campo da tabela é do tipo numérico e quando faço a comparação entre o campo e a variável o retorno do count é zero quando os valores são numéricos mas, quando o valor possui alguma letra o count retorna 1 de boa.
Alguém sabe me informar como eu faço para comparar os valores quando for numérico ?
Já tentei to_char, cast, to_number, nada funcionou, o nome do campo em que estou me referindo é o campo t.ura

Selecionar tudo

declare
v_ura varchar2(10) := '980';
v_marcador int;
begin
select count(*)into v_marcador from vur.fixa_equipamento t where t.cpa = 'SGI01' and t.ura = v_ura and t.ativo = 1 and rownum = 1;
dbms_output.put_line(v_marcador);
end;
Michel Pessoa
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 18 Nov 2013 2:24 pm

Boa tarde,

Como não sei exatamente como você utilizou o to_number segue minha dica

Selecionar tudo

 to_number(t.ura) = v_ura
Ou seja, converter para inteiro o valor do campo da tabela ao invés da variável.

O ponto positivo desta conversão é que se o valor na tabela estiver precedido de zero essa conversão resolve.

Deixe seu feedback por favor.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Primeiro se um campo pode ser tanto numérico quanto texto, seu sistema já está ferindo as regras normalização de banco pois está usando um mesmo campo para diversas finalidades. Mas se não tem "remédio" para isso devemos contornar o problema.

Se ambos dados à comparar é texto (varchar2) e for comparar um '980' com '980' independente se é texto ou número não é para apresentar problemas na comparação (não falando de desempenho). Acredito que deva existir algum caractere aí solto, um espaço, zeros ou pontuações que não estão permitindo a sua comparação "numérica".
Responder
  • Informação
  • Quem está online

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