T-SQL将修改后的列数据写入新列

时间:2016-10-25 15:31:36

标签: sql-server sql-server-2008 tsql

我有一个临时表,我想对其执行一些数据操作,然后写回原始表。但是,作为第一步,我想将原始数据与改变的数据进行比较。

根据下面的查询,如何将修改后的数据写入临时表中的新列,以便我可以并排比较?我正在使用SQL Server 2008。

UPDATE #TempCustomControls
SET ConfigValue =
CASE 
    WHEN ConfigValue like '%GetPersonProperty%$PersonID$%'
    THEN 'PersonLogic.GetPersonProperty($PersonID$, ' + RIGHT(ConfigValue, charindex(',', REVERSE(ConfigValue))-1) + ')'

    WHEN ConfigValue like '%GetProfileProperty%$PersonID$%'
    THEN 'PersonLogic.GetPersonProperty($PersonID$, ' + RIGHT(ConfigValue, charindex(',', REVERSE(ConfigValue))-1) + ')'

    WHEN ConfigValue like '%GetProfileProperty%GetJobCreatedByPerson%$JobID$%'
    THEN 'PersonLogic.GetPersonPropertyFromJobID($JobId$, ' + RIGHT(ConfigValue, charindex(',', REVERSE(ConfigValue))-1) + ')'
ELSE
    ConfigValue 
END

1 个答案:

答案 0 :(得分:1)

在临时表中添加新列并更新新列而不是ConfigValue

Alter table #TempCustomControls add new_value varchar(100)

UPDATE #TempCustomControls
SET new_value =
CASE 
    WHEN ConfigValue like '%GetPersonProperty%$PersonID$%'
    THEN 'PersonLogic.GetPersonProperty($PersonID$, ' + RIGHT(ConfigValue, charindex(',', REVERSE(ConfigValue))-1) + ')'

    WHEN ConfigValue like '%GetProfileProperty%$PersonID$%'
    THEN 'PersonLogic.GetPersonProperty($PersonID$, ' + RIGHT(ConfigValue, charindex(',', REVERSE(ConfigValue))-1) + ')'

    WHEN ConfigValue like '%GetProfileProperty%GetJobCreatedByPerson%$JobID$%'
    THEN 'PersonLogic.GetPersonPropertyFromJobID($JobId$, ' + RIGHT(ConfigValue, charindex(',', REVERSE(ConfigValue))-1) + ')'
ELSE
    ConfigValue 
END

检查select两列

Select ConfigValue,new_value 
From #TempCustomControls