Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andreia_sp

Varchar para money

Recommended Posts

Ola pessoal, to com um problema chato de conversão de valores.

 

Tenho um script que ele le um campo varchar de uma tabela para inserir em um outro campo do tipo money.

No campo varchar os valores estavam todos zuados, afinal deixou-se de livre digitação do usuario. Fiz uma rotina para limpar e deixar de formato money, porém a conversão no final dá erro:

 

Server: Msg 257, Level 16, State 3, Line 11

Implicit conversion from data type money to varchar is not allowed. Use the CONVERT function to run this query.

eis o codigo

 

DECLARE @valor as varchar(15), @valorTemp1 as varchar(15), @valorTemp2 as varchar(15)
SET @valor = '89.305,56'


SET @valor = RTRIM(LTRIM(replace(@valor, '.',',')))
SET @valorTemp1 = right(@valor,CHARINDEX (',',reverse(@valor)))
SET @valorTemp2 = SUBSTRING (@valor,1,len(@valor)-len(@valorTemp1)+1)
SET @valor = replace(@valorTemp2,',','') + @valorTemp1
SET @valor = replace(@valor,',','.')

SET @valor = convert(money,@valor)/100


SELECT @valor

 

alguem tem alguma ideia ?

 

valeus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi Andreia,

 

e se você jogar essa variavel @valor em uma variável do tipo money, tipo assim:

 

DECLARE @valor as varchar(15), @valorTemp1 as varchar(15), @valorTemp2 as varchar(15)
SET @valor = '89.305,56'

SET @valor = RTRIM(LTRIM(replace(@valor, '.',',')))
SET @valorTemp1 = right(@valor,CHARINDEX (',',reverse(@valor)))
SET @valorTemp2 = SUBSTRING (@valor,1,len(@valor)-len(@valorTemp1)+1)
SET @valor = replace(@valorTemp2,',','') + @valorTemp1
SET @valor = replace(@valor,',','.')

declare @valorMoney money
SET @valorMoney = convert(money,@valor)

SELECT @valor as valor, @valorMoney as valorMoney

retorna:

valor		   valorMoney			
--------------- --------------------- 
89305.56		89305.5600

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.