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 にすると、ANSI 3 値的論理が WHERE 句、HAVING 句、または On 状態におけるすべての述部比較で使用されます。= または != を使用した NULL との比較はすべて unknown と評価されます。

ansinull を Off に設定すると、SQL Anywhere は次の 4 つの条件に対して 2 値的論理を使用します。

expr = NULL

expr != NULL

expr = @var // @var はプロシージャ変数またはホスト変数

expr != @var

いずれの場合も、述部は true または false と評価され、unknown と評価されることはありません。このような比較では、NULL 値は各ドメインで特別な値として処理され、2 つの NULL 値の等号 (=) 比較は true になります。式 expr は、相対的に単純な式で、カラム、変数、リテラルのみを参照し、サブクエリや関数を許可しないようにしてください。

ansinull を On に設定した場合、NULL 値が少なくとも 1 つ含まれている式の集合関数の評価では、COUNT(*) を除き、「集合関数では、NULL 値は無視されます。」 (SQLSTATE=01003) という警告が生成されることがあります。ansinull を Off に設定した場合、この警告は表示されません。

制限事項
  • ansinull を Off に設定した場合、影響を受けるのは、SELECT 文、UPDATEDELETE 文、INSERT 文の述部である WHERE、HAVING、ON だけです。CASE 文、IF 文、または IF 式の比較のセマンティックは、影響を受けません。

  • Adaptive Server Enterprise 12.5 では、ansinull が Off に設定された場合、NULL パターン文字列を持つ LIKE 述部の動作が変更されています。SQL Anywhere では、LIKE 述部は従来どおり ansinull の設定に影響を受けません。