Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
控制对 NULL 值的解释。
On、Off
On
可以为单个连接或 PUBLIC 设置此选项。您必须具有 SET ANY PUBLIC OPTION 系统特权才能为 PUBLIC 或者其他用户或角色设置此选项。
此选项主要是为与 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 时,不会显示此警告。
包含 WHERE、HAVING 或 ON 子句的任意 SQL 语句都会受到 ansinull 选项的影响。同样,上述语句中的任意表达式也会受到 ansinull 选项的影响。
Adaptive Server Enterprise 12.5 引入了 LIKE 谓语的行为更改:ansinull 设置为 Off 时使用 NULL 模式字符串。在 SQL Anywhere 中,LIKE 谓语依旧不受 ansinull 设置的影响。