none
problema com Convert RRS feed

  • Pergunta

  • estou com um problema para converter varchar para decimal(10,2)

    o campo ex_11 é um varchar, nele tem alguns valores nulos e em branco

    'select top 10 Convert(decimal(10,2), replace(replace(coalesce(ex_11,''), ',', '.'), '', '0') ) as data from alx_ex '

    fiz um query que troca as virgulas por ponto e os campos em brancos por '0', se eu coloco 'top 1' ele traz resultado se eu coloco 'top 2' ou mais ele da o erro abaixo

    'Error converting data type varchar to numeric'

    quarta-feira, 14 de dezembro de 2011 15:38

Respostas

  • Boa tarde,

     

    Desconfio que o problema está nas linhas com o campo em branco.

    Experimente desta forma:

     

    select top 10 
    Convert(decimal(10,2), case ex_11 when '' then '0' else replace( coalesce( ex_11, '0'), ',', '.') end ) as data 
    from alx_ex
    
    

     

    Espero que seja útil.

     


    Assinatura: Imoveis em Guarulhos
    • Sugerido como Resposta Rodrigo Ataíde quarta-feira, 14 de dezembro de 2011 17:20
    • Marcado como Resposta thomazinoue quarta-feira, 14 de dezembro de 2011 18:43
    quarta-feira, 14 de dezembro de 2011 17:18

Todas as Respostas

  • Boa tarde,

     

    Desconfio que o problema está nas linhas com o campo em branco.

    Experimente desta forma:

     

    select top 10 
    Convert(decimal(10,2), case ex_11 when '' then '0' else replace( coalesce( ex_11, '0'), ',', '.') end ) as data 
    from alx_ex
    
    

     

    Espero que seja útil.

     


    Assinatura: Imoveis em Guarulhos
    • Sugerido como Resposta Rodrigo Ataíde quarta-feira, 14 de dezembro de 2011 17:20
    • Marcado como Resposta thomazinoue quarta-feira, 14 de dezembro de 2011 18:43
    quarta-feira, 14 de dezembro de 2011 17:18
  • Thomazinoue

    outro ponto que pode estar ocorrendo é vc esta tentando converter um texto em numerico ex.  "aa" para isto use a funcao isnumeric

    declare @alx_ex as table (id int identity(1,1), ex_11 varchar(10))
    insert into @alx_ex values ('11,45'),('50'),('0'),('aa'),(null)
    
    select top 10 Convert(decimal(10,2), replace(replace(coalesce(ex_11,''), ',', '.'), '', '0') ) as data 
    from @alx_ex 
    Where ISNUMERIC(ex_11)=1
    

     

     


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 14 de dezembro de 2011 17:27
    Moderador