存储过程批量更新

时间:2018-08-29 10:07:33

标签: sql sql-server

我正在尝试对表中的许多行进行一堆替换。我所做的并不是特别困难,但已被告知要考虑将来可能要花费很长时间的较大事务或更新。

因此,我需要考虑中断更新/事务以使其他查询等有机会运行。

所以我想用这个相当简单的任务问我该怎么做。

已建议将其作为Batch语句来执行,但我有点困惑如何继续。

UPDATE #tempresults
SET Col1 = REPLACE(Col1, 'A', '1');
UPDATE #tempresults
SET Col1 = REPLACE(Col1, 'B', '2');
UPDATE #tempresults
SET Col1 = REPLACE(Col1, 'C', '3');
UPDATE #tempresults
SET Col1 = REPLACE(Col1, 'D', '4');

以上与我要实现的目标类似,但是我需要一些指向我要寻找的东西。

如果之前已经问过这个问题,请指出我这个问题。如果需要我提供更多信息,请询问。

1 个答案:

答案 0 :(得分:1)

您可能会先删除不必要的更新(第一个),然后将其余部分合并为一个更新。即:

UPDATE #tempresults
SET Col1 = REPLACE(REPLACE(REPLACE(Col15, 
            'B', '2'),
            'C', '3'), 
            'D', '4');

您还需要确保您的更新确实不需要where子句?如果这不是一项一次性的工作,您可能会考虑定义一个自动为您计算的计算列。