如何在多个标题上替换一个字符串

时间:2014-03-17 10:13:35

标签: asp.net sql-server

如果我使用此查询,则在我的Microsoft SQL Server管理中:

select * from Modules where ModuleTitle like '%MyOldString%'

我可以使用不同的ModuleID找到多个结果,例如1,2,5,1257等。 所以现在,我想备份这个ModuleID,然后在所有模块标题中将所有字符串“MyOldString”更改为“MyNewString”,我该怎么办? 如果更改其中一个,我可以使用:

update Modules set ModuleTitle = 'MyNewString' where ModuleID = 1257

但是现在,我只需要替换字符串以及搜索结果中的所有字符串,是否可能?我需要备份那个ModuleID,以防我需要更改它们。

2 个答案:

答案 0 :(得分:1)

首先,您可以使用与搜索相同的WHERE表达式轻松更改字符串。

  select * from Modules where ModuleTitle like '%MyOldString%'

您可以使用

进行更新
 update Modules set ModuleTitle = 'MyNewString' 
 where ModuleTitle like '%MyOldString%'

就备份而言,您希望将记录备份到哪里?只是标题或完整记录?

一种选择是编写触发器,并自动将内容备份到一个单独的表中(包含ID,旧标题和更新日期)。触发器的好处是每次标题更改时记录记录,而不仅仅是代码执行时记录。

CREATE TABLE Module_backup 
(Module_ID int,
 oldtitle VARCHAR(200),
 updDate DATETIME DEFAULT getDate()
)

向表中添加触发器。基本上,在触发器中,如果填充了INSERTED和DELETED(即更新操作),

INSERT INTO Module_backup(Module_id,oldtitle)
SELECT Module_Id,ModuleTitle FROM DELETED 

答案 1 :(得分:1)

您可以使用替换查询更新它:
update Modules SET ModuleTitle = REPLACE(ModuleTitle,'MyOldString','MyNewString') WHERE ModuleTitle like '%MyOldString%' ;