批量替换多个SQL表中的值

时间:2014-04-29 10:25:01

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

我们有一个可以出现在许多表中的参考代码,需要更改一些引用。我已经制作了一份需要更新的所有表格和字段的列表:例如

  Table1.Reference,  
  Table2.Ref_Code, 
  Table3.Reference_Code

并且需要更改所有上述实例中的引用,例如:

 000123 to 00123 / 000456 to 00456

我原来的方法是创建一个巨大的列表:

UPDATE Table SET Reference = '00123' WHERE Reference = '000123'

我需要更新的每个字段,然后重复我需要更改的每个引用。但是,由于我需要更改24个引用,因此生成的~4000行查询效率不高。

我还必须处理这样一个事实,即某些表可能为空(返回结果'字符串或二进制数据将被截断')所以我可能需要考虑添加'如果存在。 ..'在那里。

1 个答案:

答案 0 :(得分:0)

更好的解决方案是拥有一个映射表。该表应具有如下结构:

表名:ReferenceMap

OldReference | NewReference

000123 | 00123

000465 | 00465

Update Table
Set Reference = map.NewReference
From ReferenceMap map
Where reference = map.OldReference

希望有所帮助