NULL
COUNT
, SUM
, MIN
, MAX
, AVG
IN
, NOT IN
EXISTS
, NOT EXISTS
UNION
, UNION ALL
, INTERSECT
, MINUS
DISTINCT
GROUP BY
, ORDER BY
NULL
NULL
peut être différente avec certains opérateurs, fonctions, et clauses, mais de manière générale :NULL
ne peut pas être comparée avec aucune autre valeur ;
la valeur NULL
n'est ni égale, ni supérieur, ni inferieur, ni différente d'aucune autre valeur, même si l'autre valeur est NULL
aussi.NULL
retourne toujours faux.NULL
ne peut ni être additionnée, ni soustraite, ni multipliée, ni être divisée par aucune autre valeur, même si l'autre valeur est NULL
aussi.NULL
.NULL
ou non il faut utiliser les prédicats IS NULL
et IS NOT NULL
.COUNT
, SUM
, MIN
, MAX
, AVG
NULL
.COUNT
qui retourne 0,
les autres fonctions vont retourner la valeur NULL
si :NULL
pour toutes les lignes du résultat de la requête,a.v1
est NULL
pour toutes les lignes du résultat de la requête.a.v1
est NULL
pour quelques lignes du résultat de la requête.a.v1
est NULL
.COUNT
fait exception à cette règle,
vu qu'elle ne prend pas en considération la valeur de l'argument,
tant que cette valeur n'est pas NULL
bien sûr.COUNT
peut prendre aussi le caractère « * » comme argument.IN
, NOT IN
IN
expression IN (expression_list)
expression_list
" peut être une liste de valeurs ou une sous requête qui peut retourner plusieurs lignes (avec une seule colonne).expression
" est comparée avec chaque élément de la "expression_list
".expression
" est égale à au moins un élément de "expression_list
".expression
" est différente de chaque élément de "expression_list
".expression
" est NULL
,
la liste des éléments est vide, ou les éléments de la sous requête sont tous NULL
.expression
" est égale à au moins un élément de "expression_list
".NULL
.expression
" est NULL
.NOT IN
expression NOT IN (expression_list)
expression_list
" peut être une liste de valeurs ou une sous requête qui peut retourner plusieurs lignes (avec une seule colonne).expression
" est comparée avec chaque élément de la "expression_list
".expression
" est différente de chaque élément de "expression_list
".expression
" est égale à au moins un élément de "expression_list
".expression
" est NULL
ou au moins un élément de "expression_list
" est NULL
.expression_list
" est NULL
.expression
" est NULL
.EXISTS
, NOT EXISTS
EXISTS
EXISTS (sous_requête)
EXISTS
retourne vraie si la sous requête retourne au moins une ligne, sinon elle retourne faux.NULL
n'affectent que la sous-requête : du moment où la sous requête retourne une ligne,
alors l'operateur EXISTS
retourne vraie, sinon retourne faux.EXISTS
retourne vraie si la sous requête retourne au moins une ligne.EXISTS
retourne faux si la sous requête ne retourne aucune ligne.NOT EXISTS
NOT EXISTS (sous_requête)
NOT EXISTS
retourne vraie si la sous requête ne retourne aucune ligne, sinon elle retourne faux.NOT EXISTS
est complètement différent de l'operateur NOT IN
lorsqu'il s'agit des valeurs NULL
;
l'absence ou la présence des valeurs NULL
n'affectent que la sous-requête : du moment où la sous requête ne retourne aucune ligne,
alors l'operateur NOT EXISTS
retourne vraie, sinon retourne faux.NOT EXISTS
retourne vraie si la sous requête ne retourne aucune ligne.UNION
, UNION ALL
, INTERSECT
, MINUS
NULL
et donc les comparer :NULL
est égale a une autre valeur NULL
et elle est différente des autres valeurs non NULL
!DISTINCT
DISTINCT
est capable de distinguer les valeurs NULL
et donc les comparer :NULL
est égale a une autre valeur NULL
et elle est différente des autres valeurs non NULL
!GROUP BY
, ORDER BY
GROUP BY
et ORDER BY
sont capables de distinguer les valeurs NULL
et donc les comparer :NULL
est égale a une autre valeur NULL
et elle est différente des autres valeurs non NULL
!