当前位置: 代码迷 >> Sql Server >> SQL字符串内演算
  详细解决方案

SQL字符串内演算

热度:58   发布时间:2016-04-24 08:57:43.0
SQL字符串内运算
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型的
------解决思路----------------------
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


------解决思路----------------------
引用:
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返回这步卡住了。
  相关解决方案