2010-02-09 74 views
7

是否有可能在更新查询中使用case语句?我需要做这样的事情:如果人名以'S'开头,则追加'1',否则追加'2'。在更新查询中使用case语句

我在SQL Server尝试这样做,也没有工作

 
UPDATE PERSON 
CASE 
WHEN NAME LIKE 'S%' THEN SET NAME = NAME + '1' 
ELSE SET NAME = NAME + '2' 
END 

回答

10

我想补充一个稍微不同的变种,我倾向于选择(个人喜好)。

UPDATE Person 
SET Name = Name + CASE WHEN Name LIKE 'S%' THEN '1' ELSE '2' END 

我喜欢这个,因为它节省重复“姓名+”位为每个条件 - 在这种情况下,它没有大的,但是在更多的条件的其他方案,这可能过于重复

7

CASE WHEN返回表达式,而不是一个声明。您可以使用它像这样:

 
UPDATE PERSON 
SET NAME = CASE WHEN NAME LIKE 'S%' THEN NAME + '1' 
            ELSE NAME + '2' 
      END 
2

这将是:

update person 
set name = case when name left(name,1) = 'S' then name + '1' else name + '2' end