Я знаю что SQL CASE
синтаксис следующие:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
Однако я не понимаю, как это работает, возможно потому что я думаю об этом как о if
оператор.
Если у меня есть поле в таблице user_role
, например, который содержит имена как "менеджер", "Неполный рабочий день" и т.д., как я генерирую поле role_order
с другим числом в зависимости от роли. В случае этого примера, "если user_role = 'менеджер' затем role_order = 5".
Обратите внимание, что я ищу учение человека, как ловить ответ, а не дать человеку ответ рыбы.
CASE
больше похож на оператор switch. В нем есть два синтаксиса, которые вы можете использовать. Первый позволяет использовать любые операторы сравнения:
CASE
WHEN user_role = 'Manager' then 4
WHEN user_name = 'Tom' then 27
WHEN columnA <> columnB then 99
ELSE -1 --unknown
END
Второй стиль предназначен для случаев, когда вы рассматриваете только одно значение, и является более лаконичным:
CASE user_role
WHEN 'Manager' then 4
WHEN 'Part Time' then 7
ELSE -1 --unknown
END