理解MySQL的CASE表达式
与直观的“if”语句不同,MySQL的CASE语法模仿“switch”语句。它提供两种不同的格式来评估条件并返回相应的结果。
比较语句的语法:
CASE<pre class="brush:php;toolbar:false">WHEN user_role = 'Manager' then 4 WHEN user_name = 'Tom' then 27 WHEN columnA <> columnB then 99 ELSE -1 --unknown
END
此格式允许您使用任何有效的 SQL 表达式指定多个比较条件。每个“WHEN”子句都会评估其条件,如果为真,则执行相应的语句。
具有单个值的语法:
CASE user_role<pre class="brush:php;toolbar:false">WHEN 'Manager' then 4 WHEN 'Part Time' then 7 ELSE -1 --unknown
END
这种简洁的形式假设您只检查一个值,并允许您在 CASE 表达式之后直接指定多个“WHEN”条件。 “ELSE”子句是可选的,如果没有满足“WHEN”条件,则提供后备值。
应用到您的示例:
生成新的字段“role_order”基于“user_role”字段,您可以使用第二种语法,如下所示:
CASE user_role<pre class="brush:php;toolbar:false">WHEN 'Manager' then 5 WHEN 'Part Time' then 8 ELSE -1 --unknown
END
当“user_role”为“Manager”时,此表达式将值 5 分配给“role_order”;当“user_role”为“Part Time”时,该表达式将值 8 分配给“role_order”;当这两个条件都不满足时,该表达式将值分配给 -1。
以上是MySQL 的 CASE 表达式如何像 Switch 语句一样发挥作用?的详细内容。更多信息请关注PHP中文网其他相关文章!