如何在更少的行中执行此SQL更新查询?

Jay*_*y C 1 sql sql-server loops

我正在执行以下更新声明.这里只列出了6行,但同样的逻辑应用于数百条记录.它确实有效,但是我没有像我那样重复更新语法,有没有办法输入更新并设置一次并以某种方式在所有行中迭代它?正如您所看到的,逻辑并不总是相同的.在这种情况下,我想添加_GRP,但原始字段值不一致,有时我想删除一些读取_2的额外文本.这是SQL Server 2012

UPDATE AOOBJECT SET NAME = 'abc_GRP' WHERE NAME = 'abc_2' AND ObjectDescription = 'Portfolio Group Description'
UPDATE AOOBJECT SET NAME = 'def_GRP' WHERE NAME = 'def' AND ObjectDescription = 'Portfolio Group Description'
UPDATE AOOBJECT SET NAME = 'ghi_GRP' WHERE NAME = 'ghi' AND ObjectDescription = 'Portfolio Group Description'
UPDATE AOOBJECT SET NAME = 'jkl_GRP' WHERE NAME = 'jkl_2' AND ObjectDescription = 'Portfolio Group Description'
UPDATE AOOBJECT SET NAME = 'mno_GRP' WHERE NAME = 'mno' AND ObjectDescription = 'Portfolio Group Description'
UPDATE AOOBJECT SET NAME = 'prq_GRP' WHERE NAME = 'prq' AND ObjectDescription = 'Portfolio Group Description'
Run Code Online (Sandbox Code Playgroud)

Jua*_*eza 7

你需要一个CASE和字符串函数RIGHT,LEFTLEN

UPDATE AOOBJECT 
SET NAME = CASE 
               WHEN RIGHT(NAME , 2) = '_2' THEN LEFT(NAME , LEN(NAME) - 2)
               ELSE NAME 
           END + '_GRP'
WHERE ObjectDescription = 'Portfolio Group Description'
Run Code Online (Sandbox Code Playgroud)