我很困惑 UNKNOWN 在 SQL 中的三值逻辑中意味着什么。它实际上意味着 NULL 吗? NULL 和 UNKNOWN 在所有布尔上下文中是否可以互换?
简单回答:
3 == 2 => FALSE
3 == 3 => TRUE
NULL == 3 => UNKNOWN
3 == NULL => UNKNOWN
NULL == NULL => UNKNOWN
表达与NULL
任一侧或两侧的计算结果为UNKNOWN
.
例如,如果您有一张桌子:
Employees(id, country)
1, USA
2, USA
3, Canada
4, NULL
假设您的老板要求您选择所有不住在美国的员工。你写:
select * from Employees
where country <> 'USA'
and get:
3, Canada
为什么不选择4?因为在WHERE
子句仅返回表达式计算结果为的行TRUE
:
1. USA <> 'USA' => FALSE -- don't return this row
2. USA <> 'USA' => FALSE -- don't return this row
3. CANADA <> 'USA' => TRUE -- return this row
4. NULL <> 'USA' => UNKNOWN -- don't return this row
它不仅仅是为了平等或不平等。对于任何谓词 https://msdn.microsoft.com/en-us/library/ms189523.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)