使用IF / ELSE IF更新多条记录?

时间:2018-01-30 08:09:12

标签: sql sql-server tsql

我有大约100条需要在数据库中更改的记录,这些记录需要快速连续更新。然后他们必须恢复原来的内容。

将以下内容视为我的数据结构:

[old value] [new value] |row1 | |row1 | |ark-PAR| |ark-paw| |ark-BAR| |ark-pag|

以及:

[old value][new value] |row2 | |row2 | |vim-PAR| |vim-paw| |vim-BAR| |vim-pag|

如何在row1中搜索例如ark-PAR,然后用ark-paw替换它,以及在row2中搜索vim-PAR并用vim-paw替换它,然后为ark-BAR,vim-BAR等做同样的事情?

我猜是某种形式的陈述,例如(注意;语法不正确):

IF (dbo.table.row1 = 'vim-PAR') 
update dbo.row1 
set row1 = replace(row1, 'ark-PAR', 'ark-paw)
AND set row2 = replace(row2, 'vim-PAR', 'vim-paw'

这样做是最好的,但我如何为多行和项目执行此操作?

我在网上看过几个讨论嵌套替换的资源,但对于超过100条记录来说这似乎不可行。

3 个答案:

答案 0 :(得分:3)

试试这个:

update [table] set [column] = 'ark-paw' where [column] = 'ark-PAR'
update [table] set [column] = 'ark-pag' where [column] = 'ark-BAR'
update [table] set [column] = 'vim-paw' where [column] = 'vim-PAR'
update [table] set [column] = 'vim-pag' where [column] = 'vim-BAR'

注意:你必须提供表格和表格。要更新的列名称。

答案 1 :(得分:2)

尝试此解决方案,因为它可以快速更新

return $query->result;

答案 2 :(得分:2)

试试这个解决方案。它解决了你的问题。我测试了这个查询。 see the attchment  result