我想知道“ = YES”是什么意思
case when ISNULL (sales_id, ‘NO’) =‘YES’ then 1 else 0;
我了解了ISNULL的含义,但在得到之后,剩下的部分几乎让人困惑。
答案 0 :(得分:0)
此逻辑完全等同于:
(case when sales_id = 'YES' then 1 else 0 end);
(嗯,这可以解决语法错误-缺少的end
)
isnull()
什么也不做,因为null
值始终不匹配。为此,更常见的功能是coalesce()
。
注意:这假设sales_id
是一个字符串。我怀疑实际意图的逻辑是:
(case when sales_id is not null then 1 else 0 end);
答案 1 :(得分:0)
让我们暂时忽略IFNULL
调用的存在。如果这样做,我们得到
CASE WHEN SALES_ID = 'YES' THEN 1 ELSE 0 END
此CASE表达式的作用是将SALES_ID列中的“是”转换为1,并将SALES_ID列中的任何其他非NULL值转换为0。在没有其他上下文的情况下,我不知道为什么< / em>已经完成,但这就是该表达式的目的。
需要IFNULL
调用,因为显然SALES_ID可以为NULL,并且由于在比较或其他操作中对待NULL的方式。这样想:NULL是有毒的。带有NULL的 Any 操作返回NULL。将NULL添加到数字将返回NULL。乘以,除以或减去NULL将返回... NULL。空毒操作。比较的工作方式相同-与NULL的比较返回NULL。不是“相等”。不“不相等”。比较返回NULL。因此,我们不想对NULL进行操作或比较,因为它会导致我们的代码做奇怪的事情-大多数情况下,我们会在希望得到其他东西的地方重新获得NULL,这将导致我们挠头,将拳头砸在桌子上,尖叫,大喊,哭泣,大笑(疯狂),考虑从高处调低(您最喜欢的神灵)的愤怒,等等。因此,我们不想对NULL进行操作。因此,为了避免所有这些潜在的不良后果(尽管,您不时知道,我认为对我的一些同事释放出一些愤怒的神是……适当的……但是,仍然... :-)我们使用IFNULL
。在这种情况下,IFNULL(SALES_ID, 'NO')
的意思是“如果SALES_ID为NULL,请给我回“ NO”。否则,请给我还回SALES_ID的值,无论可能是多少。”
那么,你在那里。祝你好运。