当数据库中的属性变为null时,我正在尝试设置默认值:
case categories.rental_price_percentage when null then '15.0' else categories.rental_price_percentage end rental
但是,当我碰到一个空值时,替换值并没有保留(其余值仍在起作用),它仅显示空值:
{
id: "3",
category_name: "Chairs",
rental: null
}
如何获取默认值并正常工作?
答案 0 :(得分:2)
WHEN NULL
表达式(不是语句)中的 CASE
将永远不会匹配,因为在您的情况下,这要求categories.rental_price_percentage = NULL
为真。但是像=
,>
,...这样的针对NULL
的比较操作的结果是NULL
,即不正确-仅在一侧或两侧,所以即使{ {1}}是不正确的。
使用表达式来评估是否为NULL = NULL
NULL
。
因此您可以使用搜索的IS NULL
表达式:
CASE
但是替换CASE
WHEN categories.rental_price_percentage IS NULL THEN
15.0
ELSE
categories.rental_price_percentage
END rental
是一项常见的任务,因此存在一个NULL
函数。它返回传递的第一个参数,而不是coalesce()
。
因此,在您的情况下,您可以简单地使用:
NULL
请注意,我还删除了coalesce(categories.rental_price_percentage, 15.0) rental
周围的单引号,因为它大概是数字值而不是字符串。