Λειτουργία Oracle NVL

Leitourgia Oracle Nvl



Η τιμή null είναι ένα πεδίο που έχει μείνει κενό ή δεν έχει εκχωρηθεί τιμή.

Οι τιμές NULL είναι κοινές σε βάσεις δεδομένων, ειδικά κατά την εισαγωγή εξωτερικών δεδομένων. Επομένως, εκτός εάν μια στήλη περιέχει έναν περιορισμό για την αποτροπή τιμών NULL, η μηχανή βάσης δεδομένων πιθανότατα θα χρησιμοποιήσει μια τιμή NULL για μια τιμή που λείπει.







Παρόλο που οι τιμές NULL είναι κοινές, μπορούν να οδηγήσουν σε ζητήματα βάσης δεδομένων, καθώς η βάση δεδομένων δεν έχει αξία για εργασία. Επομένως, είναι καλή πρακτική να εφαρμόζετε ενέργειες για τον χειρισμό τιμών NULL στα ερωτήματά σας.



Σε αυτήν την ανάρτηση, θα μάθουμε πώς να μετατρέπουμε τιμές NULL σε έναν δεδομένο πίνακα ώστε να περιέχει μια προεπιλεγμένη τιμή που είναι λιγότερο πιθανό να προκαλέσει σφάλματα λειτουργίας στη βάση δεδομένων σας.



Λειτουργία Oracle NVL

Όπως αναφέρθηκε, αυτή η συνάρτηση μας επιτρέπει να αντικαταστήσουμε τις NULL τιμές με πιο σημαντικές τιμές. Η σύνταξη της συνάρτησης παρέχεται παρακάτω:





NVL ( expr1, expr2 ) ;

Η συνάρτηση δέχεται δύο κύρια ορίσματα:

expr1 και expr2 – αυτή η παράμετρος ορίζει την τιμή που θα ελεγχθεί για τιμές NULL. Εάν η τιμή του expr1 είναι NULL, η συνάρτηση θα επιστρέψει την τιμή του expr2.



Και οι δύο εκφράσεις μπορεί να έχουν παρόμοιους ή διαφορετικούς τύπους δεδομένων. Εάν οι αντίστοιχοι τύποι δεδομένων διαφέρουν, η μηχανή βάσης δεδομένων μπορεί να πραγματοποιήσει σιωπηρή μετατροπή για να επιτρέψει τη συμβατότητα με τους τύπους δεδομένων. Εάν είναι αδύνατη η μετατροπή των αντίστοιχων τύπων δεδομένων, η μηχανή βάσης δεδομένων θα εμφανίσει σφάλμα.

Παράδειγμα χρήσης της συνάρτησης Oracle NVL().

Το ακόλουθο παράδειγμα δείχνει τη βασική χρήση της συνάρτησης NVL():

Παράδειγμα 1

Εξετάστε το ακόλουθο παράδειγμα:

επιλέγω lvl ( 'γεια' , 'κόσμος' ) απο διπλο?

Στο προηγούμενο παράδειγμα, χρησιμοποιούμε τη συνάρτηση NVL() για να ελέγξουμε αν η συμβολοσειρά «γεια» είναι τιμή NULL. Εφόσον η παρεχόμενη τιμή δεν είναι μηδενική, η συνάρτηση θα επιστρέψει τη συμβολοσειρά «γεια».

Παράδειγμα 2

Εξετάστε το δεύτερο παράδειγμα που φαίνεται παρακάτω:

επιλέγω lvl ( μηδενικό, 'κόσμος' ) απο διπλο?

Σε αυτήν την περίπτωση, καθώς η πρώτη παράσταση είναι τιμή NULL, το ερώτημα θα επιστρέψει τη δεύτερη συμβολοσειρά όπως φαίνεται παρακάτω:

Παράδειγμα 3

Μπορούμε επίσης να χρησιμοποιήσουμε τη συνάρτηση NVL() για να αντικαταστήσουμε τις τιμές NULl σε έναν πίνακα βάσης δεδομένων. Εξετάστε τον πίνακα των εργαζομένων που φαίνεται παρακάτω:

επιλέγω FIRST_NAME, LAST_NAME, EMAIL, SALARY, COMMISSION_PCT από EMPLOYEES emp.

Πίνακας αποτελεσμάτων:

Όπως μπορούμε να δούμε, η στήλη Commission_pct περιέχει τιμές NULl. Μπορούμε να δημιουργήσουμε ένα ερώτημα για να αντικαταστήσουμε τις τιμές NULL από τη στήλη Commission_pct με 0, όπως φαίνεται στο παρακάτω παράδειγμα:

επιλέγω FIRST_NAME, LAST_NAME, EMAIL, SALARY, nvl ( COMMISSION_PCT, 0 )
από ΕΡΓΑΖΟΜΕΝΕΣ εμπ?

Στο προηγούμενο παράδειγμα ερωτήματος, χρησιμοποιούμε τη συνάρτηση NVL() για να ελέγξουμε την τιμή στη στήλη Commission_pct για NULL. Εάν υπάρχει τιμή NULL, επιστρέφουμε 0. Διαφορετικά, επιστρέφουμε την αρχική τιμή.

Αυτό θα μας επιτρέψει να αντικαταστήσουμε τις τιμές NULL στη στήλη με 0, όπως φαίνεται στον πίνακα που προκύπτει παρακάτω:

Μπορούμε να το χρησιμοποιήσουμε με μια δήλωση UPDATE ή να αποθηκεύσουμε την τιμή που προκύπτει σε μια προβολή πίνακα.

συμπέρασμα

Σε αυτό το σεμινάριο, μάθατε πώς να χρησιμοποιείτε τη συνάρτηση Oracle NVL() για να αντικαταστήσετε τις τιμές NULL με προεπιλεγμένες τιμές. Είναι καλό να έχουμε κατά νου ότι παρόλο που η συνάρτηση NVL() μοιάζει πολύ με τη συνάρτηση COALESCE(), η συνάρτηση NVL() μπορεί να επιστρέψει μόνο μία τιμή. Ταυτόχρονα, η συνάρτηση coalesce() μπορεί να επιστρέψει πολλές τιμές.

Αν ψάχνετε για μια συνάρτηση που μπορεί να λάβει περισσότερα από δύο ορίσματα χωρίς τη χρήση της συνάρτησης coalesce(), σκεφτείτε τη συνάρτηση NVL2().