我有下表测试

id       Name           idREF     FORMULE
1        A              gR        gR1+gR2+gR3
2        B              gR1       123
3        C              gR2       124
4        e              gR3       125
11       A1             gR11      gR21-gR31
12       B1             gR21      1231
13       C1             gR31      1241

如何修改表测试:将公式(+或-)替换为其值。
所以我会得到
  id       Name           idREF     FORMULE     FORMULERESULT
  1        A              gR        gR1+gR2+gR3 123+124+125
  2        B              gR1       123          123
  3        C              gR2       124          124
  4        e              gR3       125          125
  11       A1             gR11      gR21-gR31   1231-1241
  12       B1             gR21      1231         1231
  13       C1             gR31      1241         1241

最佳答案

CREATE function dbo.converttoMap
(@value varchar(100))
RETURNS varchar(100)
WITH EXECUTE AS CALLER
AS
BEGIN
    Declare @result varchar(100)

    select @value = REPLACE(@value, idREF, formule)
  from fortable where  @value like '%'+idREF+'%' and formule not  LIKE '%[^0-9]%'
  set @result=@value
    return(@result)
END

运行此函数,然后在更新查询中使用此函数
update ForTable set FORMULE=dbo.converttoplus(FORMULE) where formule LIKE '%[^0-9]%'

使用表名而不是ForTable

10-05 19:10