SQL Server - reemplazar valores en formula y converir a numero

   
Vista:

reemplazar valores en formula y converir a numero

Publicado por elvis (9 intervenciones) el 05/04/2010 18:20:34
Saludos a todos y todas.

Tengo una tabla con el campo "formula" donde guarda formulas como las siguientes:

SA*0.00056
((SA*0.003)/12)*1.13
SA*0.00031

"SA" es un valor q debo reemplazar en la formula, para ello estoy usando:

DECLARE @myval decimal (18, 5)
SET @myval = 193.57
select replace(formula, 'SA', @myval) from taba_formulas

Hasta aqui funciona y me da el siguiente resultado:

193.57000*0.00056
((193.57000*0.003)/12)*1.13
193.57000*0.00031

El problema es que me parece q esto aun sigue como texto, como lo puedo convertir en numero, de manera q se calcule la formula. (obtener el resultado de la formula)

He utilizado:

select CONVERT( decimal (18, 5) , replace(formula, 'SA', @myval) ) from tabla.
select cast(replace(formula, 'SA', @myval) as decimal(18,5) ) from tabla

Pero me da: Error al convertir tipo de varchar a numeric, que hago?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

RE:reemplazar valores en formula y converir a nume

Publicado por Isaias (3186 intervenciones) el 06/04/2010 17:43:35
¿Y de que tipo es FORMULA?, No deberias considerar tambien su conversion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:reemplazar valores en formula y converir a nume

Publicado por elvis (9 intervenciones) el 06/04/2010 18:57:45
El campo formula es : varchar(150), a que tipo debería convertirlo...?, por que primero lo necesito como texto para reemplazar SA por el monto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:reemplazar valores en formula y converir a nume

Publicado por Isaias (3186 intervenciones) el 06/04/2010 21:00:56
Elvis

No creo que "en un solo paso" puedas realizarlo, te dejo un ejemplo para ver si con esto, te ayudo a conseguir, lo que deseas:

DECLARE @Formula varchar(150)
DECLARE @SQLString NVARCHAR(200)
SET @Formula = '((SA*0.003)/12)*1.13'
SELECT @SQLString = 'SELECT ' + REPLACE(@Formula, 'SA', 193.57)
SELECT @SQLString
EXEC SP_EXECUTESQL @SQLString

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:reemplazar valores en formula y converir a nume

Publicado por elvis (9 intervenciones) el 06/04/2010 23:17:45
Saludos, y mil gracias... pero...

Lo logré, de la siguiente forma:

Valor del campo formula:

((SA*0.003)/12)*1.13

declare @credito int
declare @saldo numeric(18,2)
declare @formula varchar(250)

set @credito = 5000
select @saldo = (select saldo from creditos where num_Credito = @credito)

select @formula = (select replace(formula, 'SA', @saldo) from tabla_formulas where num = 2 and ind_tip = 'F')

exec ('select ' + @formula )

--> me da el resultado

Pero ahora quiero convertirlo en funcion,, el problema es que el :

exec ('select ' + @formula ), no se como capturarlo para que lo devuelva la funcion, ya que
return exec ('select ' + @formula )

no funciona, se podrá hacer algo.... gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:reemplazar valores en formula y converir a nume

Publicado por Isaias (3186 intervenciones) el 07/04/2010 19:18:19
Estas haciendo mal la codificacion para obtener los valores, debes hacerlo asi:

select @saldo = saldo from creditos where num_Credito = @credito

select @formula = replace(formula, 'SA', @saldo) from tabla_formulas where num = 2 and ind_tip = 'F'

Por otro lado, deberias considerar cambiar tu EXEC (@String) por EXEC sp_executesql @TuNvarchar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar