使用sql更新表中的列

时间:2014-05-09 05:22:47

标签: mysql sql

我有以下表格测试

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  

如何修改表格测试:将formule(+或 - )替换为其值。

所以我会得到

  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   

1 个答案:

答案 0 :(得分:-1)

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