SQL字符字段中的公式计算

SQL中一张表tab1有一列字段a为文本,a的值为类似于3*2,1+3,5/10,3-1,这样的表达式,现在我要一个查询语句包含列a,列b,
如tab1表
a
3*2
1-4
4+2
5/10
查询结果为
a b
3*2 6
1-4 -3
4+2 6
5/10 0.5
a字段内容都是这样的公式或者就是数字
求教高手

思路:根据字段a的内容拼查询字符串,然后用exec()去执行更新字段b,因为exec()只能执行一条sql,所以用游标逐条去执行

alter table table1 add b numeric(18,3)
DECLARE @zd varchar(200),@xiao varchar(200)
DECLARE test CURSOR FOR
select a from table1
OPEN test
FETCH NEXT FROM test into @zd
WHILE @@FETCH_STATUS = 0
BEGIN
set @xiao='update table1 set b = (select '+(select rtrim(a) from table1 where a=@zd)+')'+' where a='''+rtrim(@zd)+''''
exec (@xiao)
FETCH NEXT FROM test into @zd
end
CLOSE test
DEALLOCATE test

还有一个问题,就是如果a的值是5/10的话结果是0,不信你试试,要改成5.0/10.0才行,要不默认为整形的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-02
用存储过程可以实现,新建一个临时表tab2 将 在用TAB1建一个游标循环每一行记算
@b=exec ( select b= '+ @a+') (大概写了下)

exec (' INSERT INTO tab2 (a,b) VALUES('+@a +', '+@b算下的
第2个回答  2011-06-02
数据库本身并解决不了你的问题。
你可以考虑自定义数据库函数来解释公式,相当复杂。
推荐你在数据库取出以后再通过编程来算出结果。
编程语言有一些开发包支持公式的解析,推荐java的
Eval 0.5 - A Simple Expression Evaluator for Java
参考下载地址:http://sourceforge.net/projects/javaexpreval/
如果对你能有所帮助,请采纳,谢谢!
第3个回答  2011-06-02
我有 一朋友 高手
相似回答