CASE SQL返回Null

use*_*563 2 sql t-sql case

当我在TSQL中执行以下操作时,NULL即使有值,我也会得到.

这是我的代码:

CASE
    WHEN cal.Weekday = ' ' OR HOLIDAY.DateInfo > ' '
        THEN WEPHWORK.WEPHWORK + OCESAWD.OCESAWD + OCESAWE.OCESAWE 
    ELSE OCESAWD.OCESAWD + OCESAWE.OCESAWE
END as weighted
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

one*_*hen 6

你知道你的SQL真值表吗?

( NULL = ' ' )  --> UNKNOWN
( NULL > ' ' )  --> UNKNOWN
( ( NULL = ' ' ) OR ( NULL > ' ' ) )  --->  ( UNKNOWN OR UNKNOWN )  --> UNKNOWN
( ( 'x' = ' '  ) OR ( NULL > ' ' ) )  --->  (   FALSE OR UNKNOWN )  --> UNKNOWN
( ( ' ' = ' '  ) OR ( NULL > ' ' ) )  --->  (    TRUE OR UNKNOWN )  --> TRUE
Run Code Online (Sandbox Code Playgroud)

最后一个案例经常可以让人们抓狂.

你也知道你的SQL填充规则......?