我知道SQL的CASE语法如下:
CASE
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE
但是,我不了解它是如何工作的,可能是因为我正在考虑将其视为if声明。
if
user_role例如,如果我在表中有一个字段,其中包含诸如“经理”,“兼职”等名称,那么如何role_order根据角色生成一个具有不同编号的字段。在此示例中,“如果user_role =’经理’,则role_order = 5”。
user_role
role_order
请注意,我正在寻找一个 教男人如何钓鱼的方法, 而不是 给男人一个钓鱼的方法 。
CASE更像是switch语句。您可以使用两种语法。首先,您可以使用所需的任何compare语句:
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