Evaluar una formula

13/12/2005 - 03:23 por Alfredo Crisostomo | Informe spam
Hay alguna manera en SQL server 2000 de evaluar una formula aritmetica
simple que uno tenga en una columna varchar de una tabla ?.

Ej. 'campo1+campo2*0.25'

Nota: La expresion puede ser distinta de un registro a otro de la tabla.

Gracias

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
13/12/2005 - 15:10 | Informe spam
Alfredo,

Una forma seria usando sql dinamico. No se si estas familiarizado con los
pros y cons de usarlo, asi que te paso un link para que leas sobre el tema.

Las virtudes y maldades del SQL dinámico
http://www.hayes.ch/sql/sql_dinamico.html

Ejemplo:

use northwind
go

create table t1 (
c1 int not null identity unique,
c2 varchar(50) not null
)

insert into t1(c2) values('([unitprice] * [quantity]) * (1.00 - Discount)')
go

declare @sql nvarchar(4000)
declare @r money

set @sql = N'select @r = sum(' + (select c2 from t1 where c1 = 1) + N') from
[order details] where orderid = @orderid'

exec sp_executesql @sql, N'@orderid int, @r money output', 10250, @r output

select @r
go

drop table t1
go


AMB

"Alfredo Crisostomo" wrote:

Hay alguna manera en SQL server 2000 de evaluar una formula aritmetica
simple que uno tenga en una columna varchar de una tabla ?.

Ej. 'campo1+campo2*0.25'

Nota: La expresion puede ser distinta de un registro a otro de la tabla.

Gracias



Respuesta Responder a este mensaje
#2 Alfredo Crisostomo
13/12/2005 - 16:44 | Informe spam
Gracias Alejandro. Aunque veo que el sql dinamico esta orientado a store
procedures y para lo que busco seria como una funcion y la verdad no veo
como implementarlo con sql dinamico.

Seria por ejemplo:

Select t.pk,evaluate(t.formula) from tabla t

Donde "evaluate" seria una funcion que me evalua la expresion en t.formula.
No veo como hacerlo con sql dinamico puesto que formula es distinta en cada
registro.


"Alejandro Mesa" escribió en el
mensaje news:
Alfredo,

Una forma seria usando sql dinamico. No se si estas familiarizado con los
pros y cons de usarlo, asi que te paso un link para que leas sobre el
tema.

Las virtudes y maldades del SQL dinámico
http://www.hayes.ch/sql/sql_dinamico.html

Ejemplo:

use northwind
go

create table t1 (
c1 int not null identity unique,
c2 varchar(50) not null
)

insert into t1(c2) values('([unitprice] * [quantity]) * (1.00 -
Discount)')
go

declare @sql nvarchar(4000)
declare @r money

set @sql = N'select @r = sum(' + (select c2 from t1 where c1 = 1) + N')
from
[order details] where orderid = @orderid'

exec sp_executesql @sql, N'@orderid int, @r money output', 10250, @r
output

select @r
go

drop table t1
go


AMB

"Alfredo Crisostomo" wrote:

Hay alguna manera en SQL server 2000 de evaluar una formula aritmetica
simple que uno tenga en una columna varchar de una tabla ?.

Ej. 'campo1+campo2*0.25'

Nota: La expresion puede ser distinta de un registro a otro de la tabla.

Gracias



Respuesta Responder a este mensaje
#3 Alejandro Mesa
13/12/2005 - 19:11 | Informe spam
Alfredo,

Creo que eso no es posible, al menos en 2000, porque no se puede ejecutar
sp_executesql o exec(...) dentro de una funcion.


AMB

"Alfredo Crisostomo" wrote:

Gracias Alejandro. Aunque veo que el sql dinamico esta orientado a store
procedures y para lo que busco seria como una funcion y la verdad no veo
como implementarlo con sql dinamico.

Seria por ejemplo:

Select t.pk,evaluate(t.formula) from tabla t

Donde "evaluate" seria una funcion que me evalua la expresion en t.formula.
No veo como hacerlo con sql dinamico puesto que formula es distinta en cada
registro.


"Alejandro Mesa" escribió en el
mensaje news:
> Alfredo,
>
> Una forma seria usando sql dinamico. No se si estas familiarizado con los
> pros y cons de usarlo, asi que te paso un link para que leas sobre el
> tema.
>
> Las virtudes y maldades del SQL dinámico
> http://www.hayes.ch/sql/sql_dinamico.html
>
> Ejemplo:
>
> use northwind
> go
>
> create table t1 (
> c1 int not null identity unique,
> c2 varchar(50) not null
> )
>
> insert into t1(c2) values('([unitprice] * [quantity]) * (1.00 -
> Discount)')
> go
>
> declare @sql nvarchar(4000)
> declare @r money
>
> set @sql = N'select @r = sum(' + (select c2 from t1 where c1 = 1) + N')
> from
> [order details] where orderid = @orderid'
>
> exec sp_executesql @sql, N'@orderid int, @r money output', 10250, @r
> output
>
> select @r
> go
>
> drop table t1
> go
>
>
> AMB
>
> "Alfredo Crisostomo" wrote:
>
>> Hay alguna manera en SQL server 2000 de evaluar una formula aritmetica
>> simple que uno tenga en una columna varchar de una tabla ?.
>>
>> Ej. 'campo1+campo2*0.25'
>>
>> Nota: La expresion puede ser distinta de un registro a otro de la tabla.
>>
>> Gracias
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida