Les NULL sont un peu bizarres. Un NULL est jamais égal à n'importe quoi y compris un autre NULL. De plus, toute opération booléenne sur un NULL renvoie NULL.
L'expression end IS NOT NULL
évaluera false
si end
est NULL, et true
si end
n'est pas NULL.
L'expression NOT( end=NULL)
sera en fait toujours évalué à NULL car (end = NULL)
est égal à NULL et NOT (NULL)
est également égal à NULL. Plus précisément dans une clause WHERE, ce ne sera jamais évaluer true
.