none
Converter nvarchar(255) para float RRS feed

  • Pergunta

  • Amigos poderiam me ajudar com essa questão,

       Tenho uma coluna com dados nvarchar(255) queria converter todos os valores dessa coluna para float, porém quando uso o ALTER TABLE recebo a seguinte mensagem:

    Msg 8114, Level 16, State 5, Line 1
    Error converting data type nvarchar to float.
    The statement has been terminated

    Também não consigo mudar o tipo pelo modo designer da tabela..

    Poderiam me ajudar?

    Esses são os tipos de dados que estão na coluna.

    420,8
    137,43
    127,89
    137,43
    174
    140,63

    Muito Obrigado!

    terça-feira, 18 de março de 2014 18:03

Respostas

Todas as Respostas

  • Boa tarde,

    Experimente executar um Update antes de alterar a coluna para retirar eventuais pontos separadores de milhares, trocar a vírgula por ponto, e remover eventuais espaços em branco no início ou fim do valor:

    update Tabela
    set ColVarChar = LTRIM(RTRIM(REPLACE(REPLACE(ColVarChar, '.', ''), ',', '.')))

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta Edinaldo Junior quarta-feira, 19 de março de 2014 12:36
    terça-feira, 18 de março de 2014 18:37
  • Starcker,

    Concordo com o gapimex, um ou mais registros estão armazenados em um formato "texto" que não pode ser simplesmente convertido, você vai precisar "converter" eles em formato "numérico" (padrão en-US).

    Para alterar os dados, segue outra sugestão:

    UPDATE SuaTabela SET 
    COLUNA=CAST(REPLACE(COLUNA,',','.') AS FLOAT)
    GO
    
    ALTER TABLE SuaTabela 
      ALTER COLUMN COLUNA  FLOAT
    GO

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    • Sugerido como Resposta Edinaldo Junior quarta-feira, 19 de março de 2014 12:36
    • Não Sugerido como Resposta Edinaldo Junior quarta-feira, 19 de março de 2014 12:37
    terça-feira, 18 de março de 2014 19:12
    Moderador
  • Tentei as duas formas todas as duas trocaram o ponto pela virgula porém continua dando o erro quando vai converter pra float

    Msg 8114, Level 16, State 5, Line 3
    Error converting data type nvarchar to float.
    The statement has been terminated.

    terça-feira, 18 de março de 2014 19:36
  • Starcker,

    O SQL Server está bloqueando à alteração para evitar perda de dados.

    Veja a explicação no link:

    http://technet.microsoft.com/pt-br/library/ms190259.aspx

    Tem duas possibilidades:

    - Crie uma nova coluna com os valores convertidos e depois exclua a coluna atual;

    - Crie uma nova coluna com os valores convertidos, atualize os dados da coluna atual para NULL e depois retorne os dados convertidos da nova coluna para esta;

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Sugerido como Resposta Edinaldo Junior quarta-feira, 19 de março de 2014 12:37
    terça-feira, 18 de março de 2014 20:13
    Moderador