SQL字符串内运算

Freeid_shi 2015-07-20 05:04:42
CREATE TABLE #TB (ZHI int,SEC VARCHAR(40))
INSERT #TB
SELECT 2,'*10*1.06/1000000' UNION ALL
SELECT 3,'*12*1.06/1000000' UNION ALL
SELECT 15,'*8*2.78/1000000'

如果求到ZHI与SEC的乘积和,
SEC这个字段是varchar型的
...全文
65 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Tiger_Zhao 2015-07-21
DECLARE @t TABLE(v DECIMAL(20,10))
INSERT INTO @t EXEC(@sql)

从@t中取返回值
回复
Freeid_shi 2015-07-20
非常感谢,高手
回复
shoppo0505 2015-07-20
引用 1 楼 Tiger_Zhao 的回复:
DECLARE @sql varchar(max)

SET @sql = ''

SELECT @sql = @sql + '
UNION ALL
SELECT CONVERT(DECIMAL(20,10),'+CONVERT(varchar(11),ZHI)+SEC+') AS V'
  FROM #TB

SET @sql = STUFF(@sql,1,13,'')

PRINT @sql

EXEC(@sql)
PRINT输出
SELECT CONVERT(DECIMAL(20,10),2*10*1.06/1000000) AS V
UNION ALL
SELECT CONVERT(DECIMAL(20,10),3*12*1.06/1000000) AS V
UNION ALL
SELECT CONVERT(DECIMAL(20,10),15*8*2.78/1000000) AS V
计算结果
                                      V
---------------------------------------
                           0.0000212000
                           0.0000381600
                           0.0003336000
+1,高手!!! 能不能用函数计算单行值,再全部输出? 如果可以,函数如何写?我在函数中exec @sql 语句,然后作为varchar返回这步卡住了。
回复
Tiger_Zhao 2015-07-20
DECLARE @sql varchar(max)

SET @sql = ''

SELECT @sql = @sql + '
UNION ALL
SELECT CONVERT(DECIMAL(20,10),'+CONVERT(varchar(11),ZHI)+SEC+') AS V'
FROM #TB

SET @sql = STUFF(@sql,1,13,'')

PRINT @sql

EXEC(@sql)

PRINT输出
SELECT CONVERT(DECIMAL(20,10),2*10*1.06/1000000) AS V
UNION ALL
SELECT CONVERT(DECIMAL(20,10),3*12*1.06/1000000) AS V
UNION ALL
SELECT CONVERT(DECIMAL(20,10),15*8*2.78/1000000) AS V

计算结果
                                      V
---------------------------------------
0.0000212000
0.0000381600
0.0003336000

回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-07-20 05:04
社区公告
暂无公告