有表info,data
info
formulaset 计算公式data
rfnum 公式ID
prosubflag 单元格标识
subjectvalue 数据info 表 formulaset 字段数据格式如下:
R.001.A10*R.001.A25-R.001.A20/(R.001.A26+R.001.A26)/2
解释:
R. 为前缀 无任何意义
R. 后的 001 为 data 表中公式ID
A10 为 data 表中单元格标识
注:公式中最多只存在 + - * / ( ) 六种运算符对于 R.001.A10 的最终数值取数sql为 select subjectvalue from data where rfnum = '001' and prosubflag = 'A10'求计算整个 formulaset 字段结果的方法,存储过程、函数都可
能够兼容 sql server 2000 2005期待高手帮助
info
formulaset 计算公式data
rfnum 公式ID
prosubflag 单元格标识
subjectvalue 数据info 表 formulaset 字段数据格式如下:
R.001.A10*R.001.A25-R.001.A20/(R.001.A26+R.001.A26)/2
解释:
R. 为前缀 无任何意义
R. 后的 001 为 data 表中公式ID
A10 为 data 表中单元格标识
注:公式中最多只存在 + - * / ( ) 六种运算符对于 R.001.A10 的最终数值取数sql为 select subjectvalue from data where rfnum = '001' and prosubflag = 'A10'求计算整个 formulaset 字段结果的方法,存储过程、函数都可
能够兼容 sql server 2000 2005期待高手帮助
下班回家了给你写
set @sql=''
set @sql='
R.001.A10*R.001.A25-R.001.A20/(R.001.A26+R.001.A26)/2
'
set @sql=REPLACE(@sql,'R.','(select subjectvalue from data where rfnum = ''')
set @sql=REPLACE(@sql,'.',''' and prosubflag=''')
set @sql=REPLACE(@sql,'+',''')+')
set @sql=REPLACE(@sql,'-',''')-')
set @sql=REPLACE(@sql,'*',''')*')
set @sql=REPLACE(@sql,'/',''')/')
print @sql
http://blog.csdn.net/roy_88/article/details/6292123
use master;
go
if OBJECT_ID('ff','tf') is not null drop function ff
go
create function ff (@name nvarchar(20))
returns @re table
(r float)
begin
declare @sql nvarchar(max)
set @sql=@name
set @sql=REPLACE(@sql,'R.','(select subjectvalue from data where rfnum = ''')
set @sql=REPLACE(@sql,'.',''' and prosubflag=''')
set @sql=REPLACE(@sql,'+',''')+')
set @sql=REPLACE(@sql,'-',''')-')
set @sql=REPLACE(@sql,'*',''')*')
set @sql=REPLACE(@sql,'/',''')/')
exec @sql
return
end
多谢,问题得以解决,我又在后面追加了两行代码
set @sql = @sql + ''')'
set @sql=REPLACE(@sql,')'')','''))')用以解决 )/ 最后翻译成 )')/ 和 结尾缺少 ') 的问题