Ο τελεστής LIKE χρησιμοποιείται στον όρο WHERE για αναζήτηση ενός συγκεκριμένου μοτίβου σε μια στήλη.

ΣΑΝ δήλωση SQL

Ο τελεστής LIKE χρησιμοποιείται για την αναζήτηση ενός συγκεκριμένου μοτίβου σε μια στήλη.

SQL LIKE Σύνταξη

Επίδειξη βάσης δεδομένων

Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε τη γνωστή βάση δεδομένων Northwind.

Ακολουθεί μια επιλογή από τον πίνακα "Πελάτες":

ταυτότητα χρήστηΌνομα ΠελάτηΤο άτομο επικοινωνίαςΔιεύθυνσηπόληΤΑΧΥΔΡΟΜΙΚΟΣ ΚΩΔΙΚΟΣΧώρα
1 Alfred Futterkiste Μαρία Άντερς Obere Str. 57 Βερολίνο 12209 Γερμανία
2 Ana Trujillo Emparedados και helados Άνα Τρουχίγιο Avda. de la Constitucion 2222 Μεξικό D.F. 05021 Μεξικό
3 Antonio Moreno Taqueria Αντόνιο Μορένο Ματάδερος 2312 Μεξικό D.F. 05023 Μεξικό
4 Γύρω από το Κέρας Τόμας Χάρντι 120 Hanover Sq. Λονδίνο WA1 1DP Ηνωμένο Βασίλειο
5 Berglunds snabbkop Christina Berglund Berguvsvagen 8 Λουλέα S-958 22 Σουηδία

Παραδείγματα χειριστή SQL LIKE

Η ακόλουθη δήλωση SQL επιλέγει όλους τους πελάτες με πόλη που αρχίζει με το γράμμα "s" :

Συμβουλή:Το σύμβολο "%" χρησιμοποιείται για τον ορισμό της μάσκας (που λείπουν γράμματα) πριν και μετά το σχέδιο. Θα μάθετε περισσότερα για τους χαρακτήρες μπαλαντέρ στο επόμενο κεφάλαιο.

Η ακόλουθη δήλωση SQL επιλέγει όλους τους πελάτες με πόλη που τελειώνει με το γράμμα "s" :

Η ακόλουθη δήλωση SQL επιλέγει όλους τους πελάτες με μια χώρα που περιέχει το μοτίβο "land" :

Η χρήση της λέξης-κλειδιού σας εμποδίζει να επιλέξετε καταχωρήσεις που δεν ταιριάζουν με το μοτίβο.

Η ακόλουθη δήλωση SQL επιλέγει όλους τους πελάτες με χώρα που δεν περιέχει το μοτίβο "land" .

LIKE και REGEXP_LIKE

τελεστές LIKE και REGEXP_LIKE σε ερωτήματα Oracle SQL, σύμβολα % και _, κανονικές εκφράσειςσε αιτήματα

Πολύ συχνά σε πρακτική δουλειάκαθίσταται απαραίτητο να πραγματοποιήσετε μια αναζήτηση συνόλου χαρακτήρων οπουδήποτε σε μια στήλη - για παράδειγμα, να αναζητήσετε όλες τις εγγραφές με ονόματα προϊόντων που περιέχουν μια συγκεκριμένη λέξη ή να αναζητήσετε μια λέξη τόσο στον ενικό όσο και στον πληθυντικό. Για το σκοπό αυτό, μπορείτε να χρησιμοποιήσετε τον τελεστή LIKE στο Oracle SQL (μπορεί επίσης να χρησιμοποιηθεί στον SQL Server) και τον τελεστή REGEXP _LIKE (αυτός ο τελεστής δεν παρέχεται στον SQL Server).

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

Ο τελεστής LIKE χρησιμοποιείται για την αντιστοίχιση τιμών χαρακτήρων σε μοτίβο με ειδικούς χαρακτήρες μπαλαντέρ (μεταχαρακτήρες). Σημειώστε ότι η Oracle παρέχει τέσσερις παραλλαγές αυτού του τελεστή:

· "κανονικό" LIKE - χρησιμοποιείται για την αναζήτηση στηλών συμβολοσειρών με παραδοσιακές κωδικοποιήσεις.

· LIKEC - χρησιμοποιείται για στήλες με κωδικοποίηση Unicode (στην ορολογία της Oracle - Unicode ολοκληρωμένη).

· LIKE2 - για κωδικοποίηση UCS2.

· LIKE4 - για κωδικοποίηση UCS4.

Ένα παράδειγμα χρήσης αυτού του τελεστή μπορεί να μοιάζει με αυτό:

σαν"R%";

Σε αυτό το παράδειγμα, το τελευταίο _όνομα μετά τη λέξη-κλειδί όπου είναι η στήλη από την οποία λαμβάνονται οι τιμές συμβολοσειράς για δοκιμή και το "R %" είναι η συνθήκη προς δοκιμή. Διακριτικό χαρακτηριστικότου τελεστή LIKE είναι ότι μπορεί να περιλαμβάνει ειδικούς χαρακτήρες μπαλαντέρ (μεταχαρακτήρες) στη συνθήκη. Υπάρχουν μόνο δύο χαρακτήρες μπαλαντέρ για αυτόν τον τελεστή:

  • % - αντιπροσωπεύει οποιαδήποτε ακολουθία μηδέν ή περισσότερων χαρακτήρων. Σε αυτήν την περίπτωση, η τιμή "%" δεν θα είναι ποτέ ίση με NULL (το IS NULL χρησιμοποιείται για τον έλεγχο αυτών των τιμών).
  • _ - αντιπροσωπεύει οποιονδήποτε μεμονωμένο χαρακτήρα.

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

Εάν θέλουμε το σύμβολο ποσοστού (%) και η υπογράμμιση (_) να αντιμετωπίζονται από την Oracle ως κανονικοί χαρακτήρες με δυνατότητα αναζήτησης (και όχι ως χαρακτήρες μπαλαντέρ), έχουμε την παράμετρο ESCAPE στη διάθεσή μας. Με αυτήν την επιλογή, μπορείτε να ορίσετε ΕΙΔΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ, μετά την οποία ο χαρακτήρας μπαλαντέρ θα θεωρείται κανονικός:

επιλέξτε last_name από το hr.employees όπου το last_name σαν"R\%" ESCAPE "\";

Στο παράδειγμά μας, έχουμε ορίσει τον χαρακτήρα \ ως παράκαμψη χαρακτήρων μπαλαντέρ και αν έχουμε έναν υπάλληλο με το επώνυμο R%, τότε το ερώτημα θα το επιστρέψει σίγουρα. Η πιο κοινή χρήση του χαρακτήρα διαφυγής χαρακτήρων μπαλαντέρ είναι η ανάστροφη κάθετο (\), η οποία είναι η πιο οικεία τιμή για τους προγραμματιστές C, αλλά μπορείτε να χρησιμοποιήσετε οποιονδήποτε χαρακτήρα ορίζοντάς τον με το ESCAPE .

Η συνθήκη LIKE δεν είναι δύσκολη στη χρήση, αλλά έχει πολύ περιορισμένο σύνολο δυνατοτήτων. Πολύ μεγαλύτερο λειτουργικότηταπαρέχει μια συνθήκη REGEXP _LIKE που σας επιτρέπει να καθορίσετε μια συνθήκη αναζήτησης χρησιμοποιώντας τυπικές τυπικές εκφράσεις συμβατές με το POSIX. Οι κανονικές εκφράσεις είναι ένα πολύ μεγάλο θέμα που ξεφεύγει από το πεδίο αυτού του σεμιναρίου. Για μια πλήρη αναφορά σε κανονικές εκφράσεις που υποστηρίζονται από την Oracle, ανατρέξτε στο Παράρτημα Γ του βιβλίου αναφοράς SQL στην τεκμηρίωση της Oracle. Εδώ δίνουμε μόνο ένα απλό παράδειγμα:

SELECT first_name ΑΠΟ υπαλλήλους

WHERE REGEXP_LIKE (first_name, "^Ste(v|ph)en$");

Σε αυτό το παράδειγμα, επιστρέφουμε πληροφορίες για όλους τους υπαλλήλους των οποίων το όνομα αρχίζει με Ste , τελειώνει σε en και έχει είτε v είτε ph μεταξύ τους. Το αποτέλεσμα μπορεί να μοιάζει με αυτό:

Στίβεν

Στίβεν

Συγκρίνει μια έκφραση συμβολοσειράς με ένα μοτίβο σε μια έκφραση SQL.

Σύνταξη

έκφραση Σαν "δείγμα"

Σύνταξη χειριστή Σανπεριλαμβάνει τα ακόλουθα συστατικά:

Παρατηρήσεις

Χειριστής Σανμπορεί να χρησιμοποιηθεί για την αναζήτηση τιμών πεδίων που ταιριάζουν με το καθορισμένο μοτίβο. Οπως και πρότυπομπορείτε να καθορίσετε την πλήρη τιμή (για παράδειγμα, Like "Smith" ) ή να χρησιμοποιήσετε χαρακτήρες μπαλαντέρ για να λάβετε ένα εύρος τιμών (για παράδειγμα, Όπως "Sm*") ).

Στις εκφράσεις, ο χειριστής Σανμπορεί να χρησιμοποιηθεί για τη σύγκριση μιας τιμής πεδίου με μια έκφραση συμβολοσειράς. Για παράδειγμα, εάν σε Ερώτημα SQLκαθορίστε Όπως "C*", το ερώτημα θα επιστρέψει όλες τις τιμές πεδίου που ξεκινούν με το γράμμα C. Σε ένα ερώτημα με παραμέτρους, μπορείτε να ζητήσετε από τον χρήστη να εισαγάγει ένα μοτίβο αναζήτησης.

Το ακόλουθο παράδειγμα επιστρέφει δεδομένα που ξεκινούν με το γράμμα P ακολουθούμενο από οποιοδήποτε γράμμα από το A έως το F και τρία ψηφία:

Όπως "P###"

Ο παρακάτω πίνακας δείχνει τον τρόπο χρήσης του χειριστή Σανγια έλεγχο σε σχέση με διαφορετικά μοτίβα:


Τύπος αντιστοιχίας


Δείγμα

Συμμόρφωση

Δεν ταιριάζει
(επιστρέφει "True")

Πολλαπλοί χαρακτήρες

αα, αΒα, αΒΒΒΑ

abc, AABB, Cab

Ειδικοί χαρακτήρες

Πολλαπλοί χαρακτήρες

abcdeyo, abc

Ένας χαρακτήρας

ααα, α3α, αβα

Μονοψήφιο

α0α, α1α, α2α

Εύρος χαρακτήρων

Εκτός εμβέλειας

Μικτός

Η χρησιμότητα της ρήτρας LIKE προέρχεται από τους τελεστές γενίκευσης που υποστηρίζει. Η ρήτρα LIKE επιστρέφει τη δυαδική τιμή TRUE εάν η σύγκριση βρει αντιστοιχία.

Για να λειτουργήσει η ρήτρα LIKE, η ευαισθησία πεζών-κεφαλαίων ενός συγκεκριμένου DBMS είναι πολύ σημαντική. Για παράδειγμα, Microsoft SQLΟ διακομιστής δεν κάνει διάκριση πεζών-κεφαλαίων από προεπιλογή (αν και μπορεί να ρυθμιστεί ανάλογα). Έτσι, ο SQL Server θα αντιμετωπίζει τις σειρές DAD και πατέρες ως το ίδιο. Από την άλλη πλευρά, η πλατφόρμα Oracle κάνει διάκριση πεζών-κεφαλαίων και οι χορδές DAD και dad θα είναι διαφορετικές εδώ. Ακολουθεί ένα παράδειγμα για να διευκρινιστεί καλύτερα αυτό το σημείο.

ΕΠΙΛΕΞΤΕ * ΑΠΟ συγγραφείς ΟΠΟΥ το όνομα LIKE "LARS%"

Αυτό το ερώτημα για τον Microsoft SQL Server θα ανακτήσει εγγραφές από τον πίνακα συντάκτες όπου το επώνυμο (lname) είναι "larson" ή "lars", παρόλο που η αναζήτηση ορίζεται με κεφαλαία ("LARS%") στο ερώτημα. Στην Oracle, αυτό το ερώτημα δεν θα βρει τα επώνυμα "Larson" ή "Lars", επειδή η Oracle κάνει μια σύγκριση με διάκριση πεζών-κεφαλαίων.

DB2

Η πλατφόρμα DB2 υποστηρίζει τη σύνταξη ρήτρας LIKE ANSI SQL 2003. Υποστηρίζονται οι χαρακτήρες μπαλαντέρ % και η υπογράμμιση (_). Υποστηρίζονται οι ακολουθίες ακύρωσης.

Η πλατφόρμα DB2 κάνει διάκριση πεζών-κεφαλαίων, επομένως η εφαρμογή της ρήτρας LIKE εδώ έχει πλήρη διάκριση πεζών-κεφαλαίων. Για να συγκρίνετε πάντα τιμές χωρίς διάκριση πεζών-κεφαλαίων, χρησιμοποιήστε τη λειτουργία UPPER ή TRANSLATE. Επιπλέον, το DB2 μετατρέπει σιωπηρά την κωδικοσελίδα ενός προτύπου συμβολοσειράς ή μιας ακολουθίας διαφυγής σε μια κωδικοσελίδα έκφρασης, εκτός εάν προσδιορίζονται με μια ρήτρα FOR BIT DATA.

MySQL

Η πλατφόρμα MySQL υποστηρίζει τη σύνταξη ANSI για τον όρο LIKE. Οι χαρακτήρες μπαλαντέρ % και η υπογράμμιση (_) υποστηρίζονται. Υποστηρίζεται επίσης η ρήτρα ESCAPE.

Επιπλέον, η MySQL υποστηρίζει τις ειδικές συναρτήσεις REGEXP και NOT RLIKE που χρησιμοποιούνται στην επικύρωση τυπικών εκφράσεων. Η MySQL μετά την έκδοση 3.23.4 δεν κάνει διάκριση πεζών-κεφαλαίων από προεπιλογή.

Μαντείο

Η πλατφόρμα Oracle υποστηρίζει τη σύνταξη ANSI για τον όρο LIKE. Οι χαρακτήρες μπαλαντέρ % και η υπογράμμιση (_) υποστηρίζονται. Υποστηρίζεται επίσης η ρήτρα ESCAPE. Η σύνταξη για την πρόταση LIKE στο Oracle είναι η εξής.

έκφραση WHERE (LIKE | LIKEC | LIKE2 |

LIKE4) string_pattern

Τα συντακτικά στοιχεία ειδικά για το Oracle έχουν τις ακόλουθες έννοιες.

μεταχειρισμένος πλήρες σετχαρακτήρες UNICODE.

Χρησιμοποιείται το σύνολο χαρακτήρων UNICODE USC2.

Χρησιμοποιείται το σύνολο χαρακτήρων UNICODE USC4.

Επειδή η πλατφόρμα Oracle κάνει διάκριση πεζών-κεφαλαίων, πρέπει να συμπεριλάβετε μια έκφραση, string_pattern ή και τα δύο στη συνάρτηση UPPER. Σε αυτή την περίπτωση, θα συγκρίνετε πάντα αυτό που χρειάζεστε.

PostgreSQL

Η πλατφόρμα PostgreSQL υποστηρίζει τη σύνταξη όρων ANSI LIKE. Οι χαρακτήρες μπαλαντέρ % και η υπογράμμιση (_) υποστηρίζονται. Υποστηρίζονται επίσης οι ακολουθίες ακύρωσης.

Η PostgreSQL κάνει διάκριση πεζών-κεφαλαίων από προεπιλογή. Για σύγκριση χωρίς διάκριση πεζών-κεφαλαίων, η PostgreSQL παρέχει τη λέξη-κλειδί ILIKE. Μπορείτε επίσης να χρησιμοποιήσετε τον τελεστή - ως ισοδύναμο με LIKE και -* ως ισοδύναμο με ILIKE, και !- και !-* ως ισοδύναμο με NOT LIKE και NOT ILIKE αντίστοιχα. Αυτές είναι όλες οι επεκτάσεις του προτύπου ANSI που υπάρχουν στο PostgreSQL.

Για παράδειγμα, τα ακόλουθα ερωτήματα είναι λειτουργικά ισοδύναμα.

ΕΠΙΛΕΞΤΕ * ΑΠΟ συγγραφείς ΟΠΟΥ πόλη LIKE "%ville"; ΕΠΙΛΟΓΗ * ΑΠΟ συγγραφείς WHERE city -- ^ville";

Επειδή αυτά τα παραδείγματα χρησιμοποιούν πεζά γράμματα, ενδέχεται να αντιμετωπίσετε ένα ζήτημα με διάκριση πεζών-κεφαλαίων. Δηλαδή, το ερώτημα αναζητά τη συμβολοσειρά "%ville" με πεζά και ο πίνακας μπορεί να περιέχει κεφαλαία τιμές που δεν θα συμπεριληφθούν στα αποτελέσματα - "BROWNSVILLE", "NASHVILLE", "HUNTSVILLE". Αυτό το πρόβλημα μπορεί να λυθεί όπως φαίνεται στο παρακάτω παράδειγμα.

Μετατροπή τιμών σε κεφαλαία

ΕΠΙΛΟΓΗ * ΑΠΟ συγγραφείς WHERE city LIKE UPPER("%ville");

Κάντε μια σύγκριση χωρίς διάκριση πεζών-κεφαλαίων ΕΠΙΛΟΓΗ * ΑΠΟ συγγραφείς WHERE city ~~* "%ville";

ΕΠΙΛΕΞΤΕ * ΑΠΟ συγγραφείς ΟΠΟΥ πόλη LIKE "%ville";

Θα πρέπει να γνωρίζετε (αν και αυτό είναι πέρα ​​από το σκοπό αυτού του βιβλίου) ότι η PostgreSQL υποστηρίζει επίσης κανονικές εκφράσεις POSIX. Λεπτομέρειες δίνονται στην περιγραφή της πλατφόρμας.

SQL Server

Η πλατφόρμα SQL Server υποστηρίζει τη σύνταξη όρων ANSI LIKE. Υποστηρίζονται οι ακολουθίες ακύρωσης. Υποστηρίζονται επίσης οι ακόλουθοι πρόσθετοι τελεστές γενίκευσης.

Ταιριάζει με οποιαδήποτε τιμή από το καθορισμένο σύνολο, όπως , ή εύρος, όπως [k-n].

[ΜΕΓΑΛΟ]- ταιριάζει με οποιονδήποτε χαρακτήρα που δεν βρίσκεται στο καθορισμένο σύνολο ή εύρος.

Χρησιμοποιώντας πρόσθετη γενίκευση Δηλώσεις SQLδιακομιστή που παίρνετε Επιπρόσθετα χαρακτηριστικά. Για παράδειγμα, μπορεί να θέλετε να ανακτήσετε εγγραφές για συγγραφείς των οποίων τα επώνυμα είναι Carson, Carsen, Karson ή Karsen.

ΕΠΙΛΟΓΗ * ΑΠΟ συγγραφείς WHERE au_lname LIKE "arsn"

ΕΠΙΛΟΓΗ * ΑΠΟ συγγραφείς WHERE au_lname LIKE "arsn"

Θέμα 3.2. Επιλογή δεδομένων χρησιμοποιώντας την ρήτρα SELECT

Όλες οι δηλώσεις SQL που έχουν σχεδιαστεί για την επιλογή δεδομένων από υπάρχοντες πίνακες βάσης δεδομένων ξεκινούν με τη λέξη-κλειδί (τελεστής) SELECT (επιλογή). Για να τελειοποιήσετε το ερώτημα, χρησιμοποιούνται πρόσθετοι τελεστές, όπως FROM (από), WHERE (όπου) κ.λπ.

Η απλούστερη σύνταξη για ένα ερώτημα SELECT είναι:

ΕΠΙΛΕΓΩ<список столбцов>

ΑΠΟ<список таблиц>

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

Π ΟΠΟΥ(όπου) - υποδεικνύει τις εγγραφές που πρέπει να συμπεριληφθούν στον πίνακα που προκύπτει (φίλτρο εγγραφής).

Π ΟΜΑΔΑ ΑΠΟ(ομάδα κατά) - ομαδοποιεί εγγραφές με βάση τις τιμές ορισμένων στηλών.

Π ΕΧΟΝΤΑΣ(έχοντας, υπόκειται σε) - υποδεικνύει τις ομάδες εγγραφών που πρέπει να συμπεριληφθούν στον πίνακα που προκύπτει (φίλτρο ομάδας).

Π ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ(ταξινόμηση κατά) – ταξινομεί (τακτοποιεί) εγγραφές.

χειριστές ΕΠΙΛΕΓΩκαι ΑΠΟείναι υποχρεωτικά. Η λέξη-κλειδί SELECT λέει στη βάση δεδομένων ότι η δεδομένη ρήτρα είναι ένα αίτημα για ανάκτηση πληροφοριών. Μετά τη λέξη ΕΠΙΛΟΓΗ έως "," παρατίθενται τα ονόματα των στηλών των οποίων ζητείται το περιεχόμενο. Η λέξη FROM ακολουθείται από μια λίστα ονομάτων πινάκων (που χωρίζονται με ",") από την οποία ανακτώνται πληροφορίες.

Παράδειγμα:

ΕΠΙΛΕΞΤΕ ΟΝΟΜΑ, ΕΠΩΝΥΜΟ

Το παραπάνω ερώτημα ανακτά όλες τις τιμές ΟΝΟΜΑ και ΕΠΙΘΕΤΟ από τον πίνακα STUDENTS. Το αποτέλεσμα είναι ένας πίνακας με 2 στήλες.

Η σειρά των στηλών σε αυτόν τον πίνακα ταιριάζει με τη σειρά των πεδίων που καθορίζονται στο ερώτημα και όχι με τη σειρά τους στον πίνακα STUDENTS.

Εάν πρέπει να λάβετε όλες τις στήλες του πίνακα, τότε αντί για μια λίστα στηλών, αρκεί να καθορίσετε το σύμβολο ( *) .

Παράδειγμα:

ΕΠΙΛΕΓΩ *

Αμέσως μετά τη δήλωση SELECT πριν από τη λίστα των στηλών, μπορείτε να κάνετε αίτηση λέξεις-κλειδιάΟΛΑ (όλα)και ΔΙΑΚΡΙΤΙΚΟ (διαφορετικός), τα οποία καθορίζουν ποιες εγγραφές θα αντιπροσωπεύουν στον πίνακα που προκύπτει. Εάν αυτές οι λέξεις-κλειδιά δεν χρησιμοποιούνται, θεωρείται ότι πρέπει να επιλεγούν όλες οι εγγραφές (που είναι επίσης το ίδιο με τη χρήση της λέξης-κλειδιού ΟΛΕΣ). Όταν χρησιμοποιείται DISTINCT, στον πίνακα που προκύπτει παρουσιάζονται μόνο μοναδικές εγγραφές. Σε αυτήν την περίπτωση, εάν υπάρχουν πολλές ίδιες εγγραφές στον πίνακα προέλευσης, τότε μόνο η πρώτη επιλέγεται από αυτές.

Παράδειγμα:

ΕΠΙΛΕΞΤΕ ΔΙΑΚΡΙΤΗ ΠΟΛΗ

Εάν προσδιορίζονται περισσότεροι από ένας πίνακες στον όρο FROM, τότε τα ονόματα στηλών στον όρο SELECT πρέπει να περιέχουν προθέματα, υποδεικνύοντας σε ποιον πίνακα ανήκουν. Το πρόθεμα διαχωρίζεται από το όνομα της στήλης με μια τελεία.

Παράδειγμα:

ΕκφρασηΤΟ ΟΝΟΜΑ ΤΟΥ ΜΑΘΗΤΗ σημαίνει στήληΟΝΟΜΑ από το τραπέζιΦΟΙΤΗΤΕΣ

Οι κεφαλίδες στηλών στον πίνακα που προκύπτει μπορούν να επαναπροσδιοριστούν κατά την κρίση σας, εκχωρώντας το λεγόμενο ψευδώνυμα. Για να το κάνετε αυτό, στη λίστα των στηλών μετά την αντίστοιχη στήλη, γράψτε μια έκφραση της φόρμας: AS στήλη-κεφαλίδα

Παράδειγμα:

ΕΠΙΛΕΞΤΕ ΟΝΟΜΑ ΩΣ Όνομα, ΕΠΩΝΥΜΟ ΩΣ Επίθετο

Τα ψευδώνυμα μπορούν επίσης να καθοριστούν για κάθε πίνακα μετά τη λέξη-κλειδί FROM. Για να γίνει αυτό, αρκεί να καθορίσετε ένα ψευδώνυμο που χωρίζεται με ένα κενό αμέσως μετά το όνομα του αντίστοιχου πίνακα. Τα ψευδώνυμα πίνακα που είναι μικρότερα από τα ονόματά τους είναι χρήσιμα σε σύνθετα ερωτήματα.

Παράδειγμα:

ΕΠΙΛΕΞΤΕ T1.NAME , T1.SURNAME, T2.SUM_STIPEND

ΑΠΟ ΜΑΘΗΤΕΣ Τ1, ΥΠΟΒΟΛΗ Τ2;

WHERE δήλωση

Οι συνθήκες αναζήτησης στον όρο WHERE είναι δυαδικές εκφράσεις, δηλ. πάρτε ένα από τα τρία πιθανές τιμές: αληθής, ψευδήςκαι ΜΗΔΕΝΙΚΟ (αυτό συμβαίνει όταν ορισμένα από τα στοιχεία της έκφρασης είναι NULL). Έτσι, στην SQL έχουμε να κάνουμε με λογική τριών τιμών.

Κατά τη σύνταξη λογικών εκφράσεων, χρησιμοποιούνται ειδικές λέξεις-κλειδιά και σύμβολα πράξεων σύγκρισης, τα οποία ονομάζονται κατηγόρημα:

ü συγκριτικά κατηγορήματα: (=), (<), (>), (<>), (<=), (>=);

ü ΑΡΕΣΕΙ, ΟΧΙ ΑΡΕΣΕΙ.

ü ΟΛΑ, ΜΕΡΙΚΑ, ΟΠΟΙΑΔΗΠΟΤΕ;

Παράδειγμα:

ΠΟΥ ΕΠΩΝΥΜΟ = "Petrov";

Ως αποτέλεσμα της εκτέλεσης του ερωτήματος, θα ληφθεί ένας πίνακας μιας στήλης, ο οποίος θα περιέχει τα ονόματα όλων των μαθητών με το όνομα Petrov, οι οποίοι βρίσκονται στον πίνακα STUDENTS.

Παράδειγμα:

Γράψτε αίτημα για τα ονόματα και τα επώνυμα των φοιτητών που σπουδάζουν στο 3ο έτος και λαμβάνουν υποτροφία:

ΕΠΙΛΕΞΤΕ ΟΝΟΜΑ, ΕΠΩΝΥΜΟ

ΟΠΟΥ KURS=3 ΚΑΙ ΜΟΝΟ>0;

ΜΕΤΑΞΥ Χειριστή

Το κατηγόρημα BETWEEN (ανάμεσα) σας επιτρέπει να καθορίσετε μια έκφραση για να ελέγξετε εάν μια τιμή βρίσκεται στο εύρος που ορίζεται από τις οριακές τιμές.

Παράδειγμα:

ΕΠΙΛΟΓΗ SUBJECT_NAME

ΟΠΟΥ ΩΡΕΣ ΜΕΤΑΞΥ 30 ΚΑΙ 40?

Δώστε τα ονόματα των θεμάτων, στη μελέτη των οποίων δίνεται ο αριθμός ωρών στην περιοχή από 30 έως 40.

Οι οριακές τιμές είναι εντός του εύρους τιμών έναντι των οποίων γίνεται η σύγκριση.

Το ισοδύναμο των παραπάνω είναι μια έκφραση με κατηγορήματα σύγκρισης:

ΕΠΙΛΟΓΗ SUBJECT_NAME

ΟΠΟΥ ΩΡΕΣ>30 ΚΑΙ ΩΡΕΣ<40;

Εκτός από δεδομένα αριθμητικών τύπων, οι εκφράσεις με BETWEEN μπορούν να χρησιμοποιούν δεδομένα των ακόλουθων τύπων: χαρακτήρας, bit, ημερομηνία-ώρα.

χειριστές IN και NOT IN

Τα κατηγορήματα IN (in) και NOT IN (not in) χρησιμοποιούνται για να ελέγξουν εάν μια τιμή βρίσκεται σε μια δεδομένη λίστα τιμών.

Ένα κατηγόρημα που κατασκευάζεται με χρήση IN θεωρείται αληθές εάν η τιμή του πεδίου του οποίου το όνομα υποδεικνύεται στα αριστερά του IN ταιριάζει με μία από τις τιμές στη λίστα.

Παράδειγμα:

ΕΠΙΛΟΓΗ STUDENT_ID

WHERE MARK IN (4, 5);

Λάβετε από τον πίνακα EXAM_MARKS πληροφορίες σχετικά με μαθητές που έχουν μόνο 4 και 5 βαθμούς εξετάσεων.

ΟΧΙ ΜΕΣΑ- δεν ταιριάζει με καμία από τις τιμές

Παράδειγμα:

ΕΠΙΛΟΓΗ STUDENT_ID

WHERE MARK NOT IN(0, 1, 2, 3);

Λάβετε πληροφορίες σχετικά με τους μαθητές που δεν έχουν μη ικανοποιητικούς βαθμούς εξετάσεων από τον πίνακα EXAM_MARKS.

Οι χειριστές LIKE και ΟΧΙ LIKE

Τα κατηγορήματα LIKE (παρόμοια) και NOT LIKE (όχι παρόμοια) χρησιμοποιούνται για τον έλεγχο για μερική αντιστοίχιση συμβολοσειρών χαρακτήρων. Αυτός ο τελεστής εξετάζει τις τιμές συμβολοσειράς των πεδίων για να προσδιορίσει εάν η συμβολοσειρά που καθορίζεται στον τελεστή LIKE περιλαμβάνεται στον χαρακτήρα string_value του πεδίου που ελέγχεται.

Το κριτήριο της μερικής συμμόρφωσης προσδιορίζεται χρησιμοποιώντας δύο χαρακτήρες μπαλαντέρ:σύμβολο τοις εκατό (%) και υπογράμμιση (_). Το σύμβολο ποσοστού (%) σημαίνει οποιοδήποτε σύνολο χαρακτήρων, συμπεριλαμβανομένου του κενού, και η υπογράμμιση (_) σημαίνει οποιονδήποτε μεμονωμένο χαρακτήρα.

Παράδειγμα:

ΕΠΙΛΕΓΩ *

ΠΟΥ ΕΠΩΝΥΜΟ ΣΑΝ "P%"?

Το ερώτημα καταλήγει σε έναν πίνακα που περιέχει δεδομένα για μαθητές των οποίων το επίθετο αρχίζει με το γράμμα "P".

Εάν θέλετε να εξαιρέσετε όλους τους μαθητές με το επώνυμο "Petrov", πρέπει να εκτελέσετε το ακόλουθο ερώτημα:

ΕΠΙΛΕΓΩ *

ΠΟΥ ΕΠΩΝΥΜΟ ΟΧΙ ΣΑΝ "Petrov"?

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

Παράδειγμα:

ΕΠΙΛΟΓΗ Όνομα, Διεύθυνση, Έκπτωση_Ποσοστό

ΑΠΟ Πελάτες

WHERE Percent_discount LIKE "20#%"

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

Παράδειγμα:

ΣΑΝ "_ \ _Π"

Σε αυτήν την έκφραση, ο χαρακτήρας "\" δηλώνεται ως χαρακτήρας ESC χρησιμοποιώντας τη λέξη-κλειδί ESCAPE. Ο 1ος χαρακτήρας "_" θα ταιριάζει, όπως και πριν, με οποιονδήποτε χαρακτήρα στη συμβολοσειρά που ελέγχεται, και ο 2ος χαρακτήρας "_" θα ερμηνεύεται κυριολεκτικά, όπως ένας κανονικός χαρακτήρας υπογράμμισης.

ΕΙΝΑΙ NULL Χειριστής

Το κατηγόρημα IS NULL χρησιμοποιείται για τον προσδιορισμό εγγραφών όπου μια συγκεκριμένη στήλη δεν έχει τιμή.

Παράδειγμα:

Μπορείτε να λάβετε αρχεία πελατών για τα οποία δεν καθορίζεται διεύθυνση χρησιμοποιώντας το ακόλουθο ερώτημα:

ΕΠΙΛΟΓΗ Όνομα, Διεύθυνση, Περιοχή

ΑΠΟ Πελάτες

ΠΟΥ Η Διεύθυνση ΕΙΝΑΙ ΜΗΧΑΝΗ.

Για να ανακτήσετε εγγραφές όπου η στήλη "Διεύθυνση" περιέχει κάποια συγκεκριμένη τιμή (δηλαδή, μη μηδενική), μπορείτε να χρησιμοποιήσετε μια παρόμοια έκφραση, αλλά με τον λογικό τελεστή NOT (not):

ΕΠΙΛΟΓΗ Όνομα, Διεύθυνση, Περιοχή

ΑΠΟ Πελάτες

ΟΠΟΥ Η Διεύθυνση ΔΕΝ ΕΙΝΑΙ ΜΗΧΑΝΗ.

Δεν πρέπει να χρησιμοποιούνται συγκριτικά κατηγορήματαμε NULL, όπως "Address=NULL"