更新sql server中的多个寄存器

更新sql server中的多个寄存器,sql,sql-server,Sql,Sql Server,我有一个包含这些值的sql表 name | parent | owner -------------------------------- Lv1 | Lv1 | Lv1 Lv2 | Lv1 | Lv1 Lv3 | Lv2 | Lv1 Lv2-1 | Lv1 | Lv1 我需要用相同的文本更新所有寄存器 示例:如果更新为

我有一个包含这些值的sql表

name      |      parent  |     owner
--------------------------------
Lv1       |      Lv1     |     Lv1
Lv2       |      Lv1     |     Lv1
Lv3       |      Lv2     |     Lv1
Lv2-1     |      Lv1     |    Lv1
我需要用相同的文本更新所有寄存器

示例:如果更新为lv1到lv1-1,则表结果为

name      |      parent   |    owner
====================================
lv1-1     |      lv1-1    |     lv1-1
Lv2       |      lv1-1    |     lv1-1
Lv3       |      Lv2      |     lv1-1
Lv2-1     |      lv1-1    |     lv1-1
====================================
如何编写此查询?

您可以试试这个

declare @oldValue NVARCHAR(10)
set @oldValue = 'lv1'

update table
set
   name = case when name = @oldValue then @oldValue + '-1' else name end,
   parent = case when parent = @oldValue then @oldValue + '-1' else parent end,
   owner = case when owner = @oldValue then @oldValue + '-1' else owner end
如果以前的值是
lv1
,则会将每个列中的值更新为
lv1-1
。否则它将保留旧值