Converter nvarchar(255) para float

SQL Server

18/03/2014

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!
Luiz Souzaos

Luiz Souzaos

Curtidas 0

Respostas

Jefferson Santos

Jefferson Santos

18/03/2014

Porque não utilizar o convert ou cast para alterar quando necessário?
GOSTEI 0
Luiz Souzaos

Luiz Souzaos

18/03/2014

Estou iniciando no sql server, pesquisei sobre convert e cast e não entendi muito bem.

O nome da minha coluna que está em nvarchar é valor_total e o nome da tabela é Tabela_Produtos, poderia me ajudar como montar o cast ou convert pra passar pra float?

Obrigado pela atenção!
GOSTEI 0
Jair N.

Jair N.

18/03/2014

Pode ser por causa da " vírgula " (,) substitua por "ponto" (.) decimal...
REPLACE CAST ou COVERT
GOSTEI 0
Luiz Souzaos

Luiz Souzaos

18/03/2014

Troquei a virgula por pontos, mas na hora de converter pra float continua o erro.
usei a seguinte query

UPDATE TABELA_IMPORT_HORAS SET
[Valor Movimento]=CAST(REPLACE([Valor Movimento],',','.') AS FLOAT)
GO

ALTER TABLE TABELA_IMPORT_HORAS
ALTER COLUMN [Valor Movimento] FLOAT
GO



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

Fabiano Carvalho

18/03/2014


Veja se funciona
select
cast(CAST(REPLACE([Valor Movimento],',','.') AS varchar(100)) as float)
from TABELA_IMPORT_HORAS
GO
Ou então, tente converter para money e depois para float.

E nunca use nvarchar,ntext...

Troquei a virgula por pontos, mas na hora de converter pra float continua o erro.
usei a seguinte query

UPDATE TABELA_IMPORT_HORAS SET
[Valor Movimento]=CAST(REPLACE([Valor Movimento],',','.') AS FLOAT)
GO

ALTER TABLE TABELA_IMPORT_HORAS
ALTER COLUMN [Valor Movimento] FLOAT
GO



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

Luiz Souzaos

18/03/2014

Fabiano, tentei o Cast com Replace que você sugeriu e não foi, e também não consegui converter pra money, acho que to lascado, nada tá funcionando.
GOSTEI 0
Isaac Jose

Isaac Jose

18/03/2014

Boa tarde Faz o seguinte..
cria um novo campo com o valor que vc quer e da update nele.
depois deleta o antigo e renomeia o novo..
GOSTEI 0
Luiz Souzaos

Luiz Souzaos

18/03/2014

Issac tentei isso, criei uma nova coluna com o tipo float e quando tento dá o update nela recebo o erro de que não posso passar de nvarchar para float.
GOSTEI 0
Isaac Jose

Isaac Jose

18/03/2014

tenta com o convert

ALTER TABLE TableName
ADD NewCol Int Null

UPDATE TableName
SET NewCol = CONVERT(INT, LocNo)


se não funcionar amanha vemos isso boa noite
GOSTEI 0
Jair N.

Jair N.

18/03/2014

Bom Dia, pode ser que o campo "NVARCHAR" contenha "ESPAÇOS" a esquerda, LTRIM()

Tá como não estou vendo, estou deduzindo...

Atc.

tenta com o convert

ALTER TABLE TableName
ADD NewCol Int Null

UPDATE TableName
SET NewCol = CONVERT(INT, LocNo)


se não funcionar amanha vemos isso boa noite
GOSTEI 0
Fabiano Carvalho

Fabiano Carvalho

18/03/2014

Pra desencargo, melhor utilizar cast(replace(convert(varchar,ltrim(rtrim(campo))),',','.') as float)

Bom Dia, pode ser que o campo "NVARCHAR" contenha "ESPAÇOS" a esquerda, LTRIM()

Tá como não estou vendo, estou deduzindo...

Atc.

tenta com o convert

ALTER TABLE TableName
ADD NewCol Int Null

UPDATE TableName
SET NewCol = CONVERT(INT, LocNo)


se não funcionar amanha vemos isso boa noite
GOSTEI 0
POSTAR