【问题标题】:How to calculate the value in the row in SQL?SQL中如何计算行中的值?
【发布时间】:2015-03-25 06:31:27
【问题描述】:

我想在下面的代码中提到的行中添加值。

我在这里发布了一些示例代码。

Create Table #temp1
(
  ID int,
  Value Varchar(MAX)
)

Insert into #temp1 Values
(1,'0.1+0.26'),
(2,'1.1+7.25-4.65'),
(3,'2.1+6.24*3.3'),
(4,'3.14+5.23*2.2'),
(5,'0.143+4.22/3.4')

Select * from #temp1

Drop Table #temp1


Select 1 ID,0.1+0.26 [Value]
Union ALL
Select 2 ID,1.1+7.25-4.65 [Value]
Union ALL
Select 3 ID,2.1+6.24*3.3 [Value]
Union ALL
Select 4 ID,3.14+5.23*2.2 [Value]
Union ALL
Select 5 ID,0.143+4.22/3.4 [Value]

谁能建议我解决这个问题。

【问题讨论】:

  • 去掉单引号。你正在使用哪个数据库? mysqlsql server 或其他东西

标签: sql sql-server sql-server-2008 sqlite


【解决方案1】:

使用Dynamic query。试试这个。

SELECT *,
       0 AS t
INTO   #pars_temp -- Intermediate table for parsing each row
FROM   #temp1

DECLARE @sql NVARCHAR(max),
        @id  INT,
        @val VARCHAR(5000)

WHILE EXISTS(SELECT 1
             FROM   #pars_temp
             WHERE  t = 0)-- To check the existence of unparsed row 
  BEGIN
      SELECT TOP 1 @val = value,
                   @id = id
      FROM   #pars_temp
      WHERE  t = 0

      SET @sql ='update #temp1 set value  = ' + @val
                + ' where id = ' + CONVERT(VARCHAR(10), @id) -- update the values

      EXEC Sp_executesql @sql

      UPDATE #pars_temp
      SET    t = 1
      WHERE  id = @id -- To remove the parsed row
  END

SELECT *
FROM   #temp1 

【讨论】:

  • 请在您的回答中添加一些解释
  • 您好,请问有什么方法可以使用函数计算值
  • @ManiMaranVasan - 也许是一个程序。您不能在函数内使用动态查询
  • 是的,最初我尝试使用过程,但我无法在 select 语句中访问过程,因此放弃该概念并在此处发布。谢谢您的查询工作正常,但相同的过程必须在不同的过程中使用,因此不能重用相同的代码,如函数。
  • @ManiMaranVasan - 不,不是user Defined Table function。它是User Defined Table type。这是一个新问题
猜你喜欢
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多