当我在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)
为什么会这样?
你知道你的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填充规则......?