Semántica del valor NULL
A continuación se describe la semántica de los valores NULL.
- Las operaciones de comparación o aritméticas con un valor (NULL) desconocido dan como resultado un valor desconocido.
- En una aplicación J2EE (Java 2 Platform, Enterprise Edition) versión 1.3, una expresión de vía de acceso utiliza una semántica de unión externa donde un campo NULL o un valor cmr se evalúa como NULL. En J2EE versión 1.4, la expresión de vía de acceso utiliza una semántica de unión interna.
- Los operadores IS NULL e IS NOT NULL se pueden aplicar a las expresiones path y devuelven TRUE o FALSE. Los operadores booleanos AND, OR y NOT utilizan la lógica de tres valores.
AND | True | False | Desconocido |
---|---|---|---|
True | True | False | Desconocido |
False | False | False | False |
Desconocido | Desconocido | False | Desconocido |
OR | True | False | Desconocido |
---|---|---|---|
True | True | True | True |
False | True | False | Desconocido |
Desconocido | True | Desconocido | Desconocido |
NOT | |
---|---|
True | False |
False | True |
Desconocido | Desconocido |
Ejemplo: semántica del valor NULL
select object(e) from EmpBean where e.salary > 10 and e.dept.budget > 100
Si el sueldo es NULL, la evaluación de e.salary > 10 se evaluará como desconocido y el objeto employee no se devolverá. Si el campo cmr, dept o budget, es NULL, e.dept.budget > 100 se evaluará como desconocido y el objeto employee no se devolverá.
select object(e) from EmpBean where e.dept.budget is null
En J2EE 1.3, si dept o budget son NULL, e.dept.budget es null y devolverá TRUE y el objeto employee se devolverá. En J2EE 1.4, el objeto employee sólo se devolverá si budget es NULL.
select object(e) from EmpBean e , in (e.dept.emps) e1 where e1.salary > 10
Si dept es NULL, la expresión path de varios valores e.dept.emps da como resultado una agrupación vacía (no una agrupación que contiene un valor NULL). Un empleado con un valor dept nulo no se devolverá.
select object(e) from EmpBean e where e.dept.emps is empty
Si dept es NULL, se evaluará el predicado como desconocido y el objeto employee no se devolverá.
select object(e) from EmpBean e , EmpBean e1 where e member of e1.dept.emps
Si dept es NULL, el predicado member of se evaluará como desconocido y el objeto employee no se devolverá.