MySQL `CASE` 语句的替代方法

MySQL alternative way to `CASE` Statement

我可以知道,是否有任何替代方法或简短方法来编写如下所示的 case 语句:

case 
  when p.our_price IS NULL OR p.our_price = 0 
   then p.sales_price 
  else p.our_price 
end as sales_price

我尝试使用 mysql 内置函数 ifnull,如下所示:

ifnull(p.our_price,p.sales_price)

但这对我不起作用。

IF(p.our_price IS NULL OR p.our_price = 0, p.sales_price, p.our_price)

第一个参数是条件,第二个和第三个参数是条件为真或假时的选择。

您可以坚持使用 CASE 表达式,但使用 COALESCE 使其更简洁:

CASE COALESCE(p.our_price, 0)
     WHEN 0 THEN p.sales_price ELSE p.our_price END AS sales_price

或者,使用 IF() 函数:

IF(COALESCE(p.our_price, 0) = 0, p.sales_price, p.our_price)

作为 MySQL 的长期用户,我经常发现自己使用 CASE 多于 IF(),因为前者允许完全省略 ELSE 条件。 IF() 另一方面,总是需要一个明确的 else 值。