Στην SQL το NULL σημαίνει "άγνωστο". Όταν συγκρίνεις "άγνωστο" με "άγνωστο", η απάντηση είναι πάντα "Δεν ξέρω", άρα FALSE. Οποιαδήποτε σύγκριση με NULL, είτε είναι =, είτε <>, είτε <, οτιδήποτε, θα φέρει πάντα σαν αποτέλεσμα NULL. Ο μόνος τρόπος να ελέγξεις για NULLs είναι το IS NULL. Για παράδειγμα, για να πάρεις όλες τις εγγραφές οι οποίες έχουν την τιμή NULL στο πεδίο Address θα γράψεις SELECT * FROM CUSTOMERS WHERE ADDRESS IS NULL. Για να πάρες αυτούς που ΔΕΝ έχουν NULL, θα πρέπει να γράψεις SELECT * FROM CUSTOMERS WHERE NOT ADDRESS IS NOT NULL.
Αυτή είναι η συμπεριφορά του ANSI_NULLS ON και απαιτείται από πολλά features του SQL Server, όπως π.χ. τα indexed views. Η επιλογή OFF υπάρχει για να μπορούν να δουλέψουν παλιότερες εφαρμογές (εφαρμογές που γράφτηκαν πριν ... το 1997 ας πούμε) και οι οποίες απαιτούν να δουλεύουν τα =, > με το NULL.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos