如果我使用此查询,则在我的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,以防我需要更改它们。
答案 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%'
;