Array
(
)

Converter nvarchar(255) para float

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

Jefferson Santos
   - 18 mar 2014

Porque não utilizar o convert ou cast para alterar quando necessário?

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

Jair A.n.
   - 18 mar 2014

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

Luiz Souzaos
   - 18 mar 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.

Faabiianooc
   - 18 mar 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...

Citação:
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.

Luiz Souzaos
   - 18 mar 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.

Isaac Jose
   - 18 mar 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..

Luiz Souzaos
   - 18 mar 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.

Isaac Jose
   - 18 mar 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

Jair A.n.
   - 19 mar 2014

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

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

Atc.

Citação:
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

Faabiianooc
   - 19 mar 2014

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

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

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

Atc.

Citação:
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