Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
控制对 NULL 值的解释。
On、Off
On
此选项主要是为与 Transact-SQL (Adaptive Server Enterprise) 兼容而设计的。ansinull 选项会影响比较谓语与 NULL 常量的计算结果,还会影响为针对 NULL 值进行的分组查询所发出的警告。
ansinull 设置为 On 时,WHERE 或 HAVING 子句或者 On 条件中的所有比较谓语使用 ANSI 三值逻辑。任何使用 = 或 != 与 NULL 进行的比较的结果都为未知。
将 ansinull 设置为 Off 表示 SQL Anywhere 对以下四个条件使用二值逻辑:
expr = NULL
expr != NULL
expr = @var // @var 是过程变量或主机变量
expr != @var
在每种情况下,谓语都计算为 true 或者 false—从不会为未知。在这样的比较中,NULL 值被视为每个域中的特殊值,两个 NULL 值进行相等性 (=) 比较的结果将是 true。注意,表达式 expr 必须相对简单,仅引用列、变量和文字;不允许引用子查询和函数。
ansinull 设置为 On 时,包含至少一个 NULL 值的表达式上的任意集合函数(COUNT(*) 除外)都会生成警告 [集合函数中的空值已消除] (SQLSTATE=01003)。ansinull 设置为 Off 时,不会显示此警告。
集合函数中的空值已消除
将 ansinull 设置为 Off 只影响 SELECT、UPDATE、DELETE 和 INSERT 语句中的 WHERE、HAVING 或 ON 谓语。CASE 或 IF 语句或者 IF 表达式中的比较语义不受影响。
Adaptive Server Enterprise 12.5 引入了 LIKE 谓语的行为更改:ansinull 设置为 Off 时使用 NULL 模式字符串。在 SQL Anywhere 中,LIKE 谓语依旧不受 ansinull 设置的影响。