組み込みのブール関数が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
、-は3つの値の論理に従って動作します。すべてのブール関数が NULL 入力で同じように動作するべきではありませんか? それについてANSI SQL標準は何と言っていますか?ISNUMERIC
IS_MEMBER
IS_SRVROLEMEMBER
ありがとう