在更新查询中使用case语句

时间:2010-02-09 09:04:10

标签: sql sql-server sql-server-2005

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

我在sql server中尝试了这个并且它不起作用

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

3 个答案:

答案 0 :(得分:10)

只是添加一个我倾向于偏好的略有不同的变体(根据个人喜好)。

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

我喜欢这个,因为它可以为每个条件保存重复“名称+”位 - 在这种情况下它并不重要,但在其他具有更多条件的情况下,它可能会过度重复

答案 1 :(得分:7)

CASE WHEN返回表达式,而不是语句。您可以像这样使用它:

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

答案 2 :(得分:2)

它将是:

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