为什么内置布尔函数在NULL
输入上的行为不同?例如 - 这个查询:
select 'ISDATE(null)' as function_call,
ISDATE(null) as result union all
select 'ISNUMERIC(null)' as function_call,
ISNUMERIC(null) as result union all
select 'IS_MEMBER(null)' as function_call,
IS_MEMBER(null) as result union all
select 'IS_SRVROLEMEMBER(null, null)' as function_call,
IS_SRVROLEMEMBER(null, null) as result
给我们:
function_call result
---------------------------- -----------
ISDATE(null) 0
ISNUMERIC(null) 0
IS_MEMBER(null) NULL
IS_SRVROLEMEMBER(null, null) NULL
看起来ISDATE
, 的ISNUMERIC
行为符合布尔逻辑,但是IS_MEMBER
, IS_SRVROLEMEMBER
- 的行为符合三值逻辑。不应该所有布尔函数在 NULL 输入上的行为都相同吗?ANSI SQL 标准对此有何规定?
谢谢