Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 配置数据库 » 数据库选项 » 数据库选项简介 » 按字母顺序排列的选项列表

 

ansinull 选项 [兼容性]

控制对 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 设置的影响。