Использование оператора case в запросе на обновление - PullRequest
7 голосов
/ 09 февраля 2010

Можно ли использовать регистр в запросе на обновление? Мне нужно сделать что-то вроде этого: Если имя человека начинается с «S», тогда добавьте «1», иначе добавьте «2».

Я пробовал это на сервере sql, и он не работал

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

Ответы [ 3 ]

10 голосов
/ 09 февраля 2010

Просто добавлю немного другой вариант, который я предпочитаю (вплоть до личных предпочтений).

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

Мне это нравится, потому что он сохраняет повторение бита "Имя +" для каждого условия - в этом случае это не главное, но в других сценариях с большим количеством условий оно может быть слишком повторяющимся

7 голосов
/ 09 февраля 2010

CASE WHEN возвращает выражение, а не утверждение. Вы можете использовать это так:

UPDATE PERSON
SET NAME = CASE WHEN NAME LIKE 'S%' THEN NAME + '1'
                                    ELSE NAME + '2'
           END
2 голосов
/ 09 февраля 2010

Это будет:

update person
set name = case when name left(name,1) = 'S' then name + '1' else name + '2' end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...