Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Χειρισμός NULL σε SQL queries

Îåêßíçóå áðü ôï ìÝëïò JohnL. Τελευταία δημοσίευση από το μέλος JohnL στις 04-04-2008, 12:18. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  04-04-2008, 01:21 41320

    Χειρισμός NULL σε SQL queries

    Έγραψα ένα query το οποίο ελέγχει δύο τιμές για το αν είναι ίδιες.

    Όταν και οι δύο είναι NULL και συγκρίνω αν NULL = NULL, τότε τι αποτέλεσμα πρέπει να επιστρέφει?

    Και τι αλλάζει ανάλογα με τα ANSI_NULLS ON/OFF?

    Χρησιμοποιώ SQL Server 2005 Express.
  •  04-04-2008, 10:25 41326 σε απάντηση της 41320

    Απ: Χειρισμός NULL σε SQL queries

    Διάβασε εδώ http://msdn2.microsoft.com/en-us/library/ms191504.aspx

    Το ANSI_NULLS έχει να κάνει με το αν μπορείς να χρησιμοποιήσεις το = και το <> για να ελέγξεις το NULL. Αν το ANSI_NULLS είναι ON σημαίνει ότι ακολουθείς το πρότυπο και ΔΕΝ μπορείς, θα πρέπει να δουλέψεις με συναρτήσεις όπως η ISNULL κλπ. Καλό είναι να το αφήσεις σε ΟΝ έστω και αν σε εξυπηρετεί να το αλλάξεις.


    Vir prudens non contra ventum mingit
  •  04-04-2008, 10:30 41327 σε απάντηση της 41320

    Απ: Χειρισμός NULL σε SQL queries

    Στην 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
  •  04-04-2008, 12:18 41330 σε απάντηση της 41327

    Απ: Χειρισμός NULL σε SQL queries

    Κατάλαβα!

    Για να συγκρίνω λοιπόν μία μεταβλητή με ένα κελί αν είναι ίδια ακόμα και αν είναι NULL έγραψα αυτό:

    title=@ms_title OR (title IS NULL AND @ms_title IS NULL)

    Είναι σωστό, έτσι?
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems