ヌル値のセマンティクス
以下は、NULL 値のセマンティクスを説明したものです。
- 不明な (NULL) 値での比較演算または算術演算は、不明な値を生み出します。
- Java 2 Platform, Enterprise Edition (J2EE) バージョン 1.3 アプリケーションでは、パス式は、NULL フィールドまたは cmr 値を NULL と評価する、外部結合セマンティックを使用します。 J2EE バージョン 1.4 では、パス式は、内部結合セマンティックを使用します。
- IS NULL および IS NOT NULL 演算子は、パス式に適用可能で、TRUE または FALSE を戻します。 ブール演算子 AND、OR、および NOT は、3 値論理を使用します。
AND | true | False | 不明 |
---|---|---|---|
True | true | False | 不明 |
False | False | False | False |
不明 | 不明 | False | 不明 |
OR | true | False | 不明 |
---|---|---|---|
True | true | true | true |
False | true | False | 不明 |
不明 | true | 不明 | 不明 |
NOT | |
---|---|
True | False |
False | true |
不明 | 不明 |
例: ヌル値のセマンティクス
select object(e) from EmpBean where e.salary > 10 and e.dept.budget > 100
給料が NULL の場合、e.salary > 10 の計算は unknown を戻し、 従業員オブジェクトは戻されません。 cmr フィールド部門または予算が NULL の場合、 e.dept.budget > 100 の計算は unknown を戻し、 その従業員オブジェクトは戻されません。
select object(e) from EmpBean where e.dept.budget is null
J2EE 1.3 では、部門または予算が NULL で、 e.dept.budget の計算が NULL の場合は TRUE を戻し、その従業員オブジェクトは戻されます。 J2EE 1.4 では、従業員オブジェクトは、予算が NULL の場合にのみ戻されます。
select object(e) from EmpBean e , in (e.dept.emps) e1 where e1.salary > 10
部門が NULL の場合は、多価のパス式 e.dept.emps の結果は、空のコレクションになります (ヌル値を含むコレクションではありません)。 部門がヌル値の従業員は、戻されません。
select object(e) from EmpBean e where e.dept.emps is empty
部門が NULL の場合、この述部の計算は unknown を戻し、その従業員オブジェクトは戻されません。
select object(e) from EmpBean e , EmpBean e1 where e member of e1.dept.emps
部門が NULL の場合、述部のメンバーの計算は unknown を戻し、 その従業員は戻されません。