SQL <> false 不返回空字段
SQL <> false not returning fields with null
我正在根据 table 中的另一个字段设置一个字段,并使用此检查:
count(case
when recipient_status = 'Premium' and
delivered_in_estimated_time_window <> false
then 1 end)
如果我得到一个值 delivered_in_estimated_time_window
作为 null
我想计算它,只有当该值为 false 我不想计算它。因此,例如,如果一行看起来像这样:
recipient_status | delivered_in_estimated_time_window
'Premium' | null
那我想加1。
只有当一行看起来像下面的这一行时,我才不想计算它:
recipient_status | delivered_in_estimated_time_window
'Premium' | false
但是,这似乎不包括 null
个字段。为什么 <> false
不适用于 null
值?
COUNT(
CASE WHEN recipient_status='Premium' AND
IFNULL(delivered_in_estimated_time_window, true) <> false
THEN 1
END
)
如上所述,NULL
是 'special':它不等于或不等于其他任何东西,它只是 NULL
。按照上面的建议,用 IFNULL
或 COALESCE
包装内容或添加更多条件,包括 IS (NOT) NULL
。
NULL
不是真假,什么都不是,所以你无法判断它是真是假。如果您希望 NULL
值表现得像 true,您可以使用 COALESCE
将 NULL
值替换为 true:
...COALESCE(delivered_in_estimated_time_window,true) <> false...
因此,您的示例将是:
COUNT(CASE
WHEN recipient_status = 'Premium' AND
COALESCE(delivered_in_estimated_time_window,true) <> false
THEN 1 END)
我正在根据 table 中的另一个字段设置一个字段,并使用此检查:
count(case
when recipient_status = 'Premium' and
delivered_in_estimated_time_window <> false
then 1 end)
如果我得到一个值 delivered_in_estimated_time_window
作为 null
我想计算它,只有当该值为 false 我不想计算它。因此,例如,如果一行看起来像这样:
recipient_status | delivered_in_estimated_time_window
'Premium' | null
那我想加1。 只有当一行看起来像下面的这一行时,我才不想计算它:
recipient_status | delivered_in_estimated_time_window
'Premium' | false
但是,这似乎不包括 null
个字段。为什么 <> false
不适用于 null
值?
COUNT(
CASE WHEN recipient_status='Premium' AND
IFNULL(delivered_in_estimated_time_window, true) <> false
THEN 1
END
)
如上所述,NULL
是 'special':它不等于或不等于其他任何东西,它只是 NULL
。按照上面的建议,用 IFNULL
或 COALESCE
包装内容或添加更多条件,包括 IS (NOT) NULL
。
NULL
不是真假,什么都不是,所以你无法判断它是真是假。如果您希望 NULL
值表现得像 true,您可以使用 COALESCE
将 NULL
值替换为 true:
...COALESCE(delivered_in_estimated_time_window,true) <> false...
因此,您的示例将是:
COUNT(CASE
WHEN recipient_status = 'Premium' AND
COALESCE(delivered_in_estimated_time_window,true) <> false
THEN 1 END)