none
Converter nvarchar para float RRS feed

  • Pergunta

  • Olá

    Estou convertendo os campos de uma tabela que estão todos em varchar para tipos int, tynint e em alguns casos float, só que quando eu converto para float o sql apresento ao seguinte erro:


     

    Msg 8114, Level 16, State 5, Line 1

    Error converting data type nvarchar to float.




    Alguém pode me ajudar.


    Maurício

    sexta-feira, 20 de fevereiro de 2009 19:17

Respostas

Todas as Respostas

  • Olá Maurício.

    Talvez algum registro não esteja no padrão para converter para float. Pode ser que esteja em texto ou fora do formato float.

    Abs
    sexta-feira, 20 de fevereiro de 2009 19:22
  • Como assim?

    O que eu sei é que o tamanho do campo em float float é para ser de 11,8 e o campo está com nvarchar 50


    Maurício
    sexta-feira, 20 de fevereiro de 2009 19:36
  • Olá Maurício,

    Verifique se os registros em questão são numéricos com o ISNUMERIC. Ex:

    SELECT * FROM TABELA WHERE ISNUMERIC(CAMPO) = 0 

    Se retornar algum registro, é por que ele não é numérico. Existem raras exceções, recomendo dar uma olhada no blog do Fabiano, há recomendações sobre essa função

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Cálcule o tamanho da queda da Petrobrás e da Vale com SQL
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!365.entry


    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 20 de fevereiro de 2009 19:39
  • Gustavo,



    O campo está como varchar(50) mas agora preciso passar para float para executar um update para outra tabela.

    Inclusive as informações vem assim: 10,87055478
                                                                1,19859116
                                                                5,72056388

    Pois primeiramente eu importei de um txt para o access e em seguida para o Sql Server e depois executei um cast do campo com divisão por 100000000 para inserir a virgula pois o campo estava sem virgula, sei onde a virgula deve ficar devido a um dicionario de dados que diz que o tamanho é de (11,8).

    Eu executei um alter table pois as colunas subiram como varchar:


    O Sql converteu para tynint, int, bigint

    Mas float não

    alter table pessoas alter column Peso_ideal float


    Resultado

    Msg 8114, Level 16, State 5, Line 1

    Error converting data type nvarchar to float.

    The statement has been terminated.





    Aguardo Retorno



    Maurício



    sexta-feira, 20 de fevereiro de 2009 19:45
  • Aproveitando a dúvida:

    Os número abaixo não deveriam ser com "." (ponto) para converter para float?

    10,87055478
    1,19859116
    5,72056388


    Abs

    sexta-feira, 20 de fevereiro de 2009 20:16
  • Entendi o que voce quiz dizer, é verdade.


    Bom... Como eu faço para substituir estas virgulas por ponto?



    Maurício
    sexta-feira, 20 de fevereiro de 2009 20:35
  • Olá Maurício.

    Pelo Replace você consegue:

    SELECT REPLACE('10,5', ',', '.'); 

    Abs

    sexta-feira, 20 de fevereiro de 2009 20:39
  • Molina,


    Muito Obrigado



    É só dar um update com replace e depois converter.


    Valeu!!!


    Maurício

    • Marcado como Resposta maumauboy sexta-feira, 20 de fevereiro de 2009 21:02
    sexta-feira, 20 de fevereiro de 2009 21:01