GARANTIR DESCONTO

Fórum Converter de String para Numérico #39026

29/09/2003

0

Preciso somar 4 notas sendo que as mesmas são do tipo string:

Select n1,n2,n3,n4, n1+n2+n3+n4 as Total from notas

o campo total passa ser do tipo float.

Quando eu executo apresenta um erro de conversão....

existe alguma função que converta de string para numérico?

Desde já agradeço!

Fabíola


Fea

Fea

Responder

Posts

29/09/2003

Afarias

bom -- se notas são números, a melhor coisa q vc podia fazer para seu sistema é criar os campos como número!

agora, para converter dados, vc pode usar a função CAST, ex::

select CAST(campo_tal as NUMERIC(8,2)) from tabela


mas os números deverão ter como separador de decimais o ´.´ (ponto) ou então não vai sair ´muito correto´.


T+


Responder

Gostei + 0

16/03/2006

Bruno Belchior

Estou exatamente com esse mesmo problema... Só que as notas são gravadas com ´,´ e como o colega afarias falou não está resolvendo meu problema...


Responder

Gostei + 0

16/03/2006

Martins

bom -- se notas são números, a melhor coisa q vc podia fazer para seu sistema é criar os campos como número! agora, para converter dados, vc pode usar a função CAST, ex:: select CAST(campo_tal as NUMERIC(8,2)) from tabela mas os números deverão ter como separador de decimais o ´.´ (ponto) ou então não vai sair ´muito correto´. T+


E no caso do separador decimal igual a ´,´ como contornar essa dor de cabeça?

Aguardo retorno.


Responder

Gostei + 0

16/03/2006

Alexandre_torres

Olá pessoal,

Desculpem minha ingnorância mas alguém poderia me explicar nesta expresão select CAST(campo_tal as NUMERIC(8,2)) from tabela que o nosso afarias colocou.

qual a função do CAST?

thakiou.


Responder

Gostei + 0

17/03/2006

Bruno Belchior

O cast tem a função de converter dados de um tipo para outro, um campo com a string ´1´ pode virar um integer 1 fazendo:
cast(campo as integer)



Responder

Gostei + 0

17/03/2006

Martins

[quote:23f16358d2=´Bruno Belchior´]O cast tem a função de converter dados de um tipo para outro, um campo com a string ´1´ pode virar um integer 1 fazendo:
cast(campo as integer)
[/quote:23f16358d2]

No SQL Server vc tem ainda [b:23f16358d2]Convert[/b:23f16358d2]


Responder

Gostei + 0

21/03/2006

Lorde_morte.

Quando o campo é null o CAST retorna null.

Como converter um campo para integer, mas quando for null retornar 0?


Responder

Gostei + 0

21/03/2006

Emerson Nascimento

use coalesce()

cast(coalesce(campo,´0´) as integer)

funciona a partir do FB 1.5


Responder

Gostei + 0

21/03/2006

Emerson Nascimento

ou

coalesce(cast(campo as integer),0)


Responder

Gostei + 0

21/03/2006

Lorde_morte.

Erro:
Dynamic SQL Error
SQL error code = -804
Function unknown
COALESCE
Statement: select coalesce(sum(Quantidadeentrada),0)-(sum(QUANTIDADESAIDASINCAL)+ sum(QUANTIDADESAIDAROTATIVO)) from movimentacao,guias
where
codigoidentificador=identificador and
codigoitem=´6515.03.075-80´ and
data<=cast(´02/01/2006´ as date)
order by data,idmovimentacao


Eu fiz algo errado?
Estou usando o interbase 6.5

Desde já obrigado.


Responder

Gostei + 0

21/03/2006

Emerson Nascimento

essa função não existe no Interbase.
somente no Firebird, a partir da versão 1.5.


Responder

Gostei + 0

21/03/2006

Lorde_morte.

emerson.en, muito obrido pela atenção.

Mas infelizmente o meu problema continua. :cry:

select sum(Quantidadeentrada)-(sum(QUANTIDADESAIDASINCAL)+ sum(QUANTIDADESAIDAROTATIVO)) from movimentacao,guias


Eu preciso fazer essa soma funcionar mesmo que um dos três parâmetros seja null.

Alguem tem alguma solução?


Responder

Gostei + 0

21/03/2006

Emerson Nascimento

no IB 6.5 tem o comando case?


Responder

Gostei + 0

21/03/2006

Lorde_morte.

Mais erro:

Dynamic SQL Error SQL error code = -104 Token unknown - line 3, char 2 WHEN Statement: select sum(Quantidadeentrada),sum(QUANTIDADESAIDASINCAL), sum(QUANTIDADESAIDAROTATIVO), CASE WHEN (sum(Quantidadeentrada)) IS NULL THEN ´0´ END AS TESTE from movimentacao,guias where codigoidentificador=identificador and codigoitem=´6515.03.075-80´ and data<=cast(´02/01/2006´ as date) order by data,idmovimentacao



Responder

Gostei + 0

21/03/2006

Emerson Nascimento

não conheço a sintaxe no IB, mas tente assim:
select
  sum(Quantidadeentrada),
  sum(QUANTIDADESAIDASINCAL),
  sum(QUANTIDADESAIDAROTATIVO),
  (CASE WHEN sum(Quantidadeentrada) IS NULL
      THEN 0
      ELSE sum(Quantidadeentrada)
   END) AS TESTE 
from
  movimentacao
inner join
  guias on (guias.identificador = movimentacao.codigoidentificador)
where 
  codigoitem=´6515.03.075-80´
  and data<=cast(´02/01/2006´ as date)
order by
  data, idmovimentacao

ou
select
  sum(Quantidadeentrada),
  sum(QUANTIDADESAIDASINCAL),
  sum(QUANTIDADESAIDAROTATIVO),
  (CASE sum(Quantidadeentrada) IS NULL
      THEN 0
      ELSE sum(Quantidadeentrada)
   END) AS TESTE 
from
  movimentacao
inner join
  guias on (guias.identificador = movimentacao.codigoidentificador)
where 
  codigoitem=´6515.03.075-80´
  and data<=cast(´02/01/2006´ as date)
order by
  data, idmovimentacao



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar