mysql like tutorial with syntax
Αυτό το σεμινάριο εξηγεί την αντιστοίχιση μοτίβων χρησιμοποιώντας τον τελεστή MySQL LIKE:
Η αντιστοίχιση μοτίβων είναι ένα σημαντικό χαρακτηριστικό σε όλες σχεδόν τις γλώσσες προγραμματισμού όπως - Java / C # / Python κ.λπ. οι οποίες αξιοποιούν κυρίως τη χρήση των Κανονικών εκφράσεων για την αντιστοίχιση μοτίβων έναντι μιας δεδομένης εισόδου συμβολοσειράς.
Η MySQL παρέχει έναν εύχρηστο χειριστή που ονομάζεται LIKE, ο οποίος θα μπορούσε να χρησιμοποιηθεί για την αντιστοίχιση των τιμών String με συγκεκριμένα μοτίβα και είναι χρήσιμος για την αναζήτηση μεγάλων συνόλων δεδομένων.
Τι θα μάθετε:
Μου αρέσει η MySQL
Σύνταξη:
Ο τελεστής LIKE χρησιμοποιείται μαζί με τον όρο WHERE σε ένα ερώτημα SELECT.
Σε ένα απλό ερώτημα, η σύνταξη μοιάζει παρακάτω.
SELECT {column_names} (*) FROM {table_name} WHERE {column_with_string_value} LIKE {match_pattern}
Διαφορετικά στοιχεία αυτής της σύνταξης εξηγούνται ως εξής:
- {στήλες_ ονόματα}: Αυτά είναι τα ονόματα των στηλών που θα εμφανίζονται ως έξοδο του ερωτήματος SELECT. Αυτές οι τιμές μπορεί να είναι * για την επιλογή όλων των στηλών ή των ονομάτων διαχωρισμένων με κόμμα μεμονωμένων στηλών.
- {table_name}: Αυτό είναι το όνομα του πίνακα στον οποίο πρέπει να εκτελεστεί το ερώτημα.
- {column_with_string_value}: Αυτή είναι η στήλη της οποίας οι τιμές πρέπει να εκτελεστούν με βάση το καθορισμένο μοτίβο. Λάβετε υπόψη ότι οποιαδήποτε σύγκριση γίνεται σε μια στήλη που μπορεί να μετατραπεί σε συμβολοσειρά.
- {match_pattern}: Αυτή είναι η έκφραση αντιστοίχισης με την οποία πρέπει να συγκριθούν οι τιμές στηλών. Ένα δείγμα μοτίβων αντιστοίχισης μπορεί να είναι - ' SM% '. Αυτό θα ταιριάζει με όλες τις τιμές στηλών ξεκινώντας με SM. Παράδειγμα: SMART, SMELL, SMOKE κ.λπ.
Παρόμοιο με αυτό το ερώτημα, ο τελεστής LIKE μπορεί να χρησιμοποιηθεί ακόμη και με πολύπλοκα ερωτήματα με ΕΓΓΡΑΦΕΣ κ.λπ., καθώς το LIKE είναι απλώς τελεστής σύγκρισης και μπορεί να χρησιμοποιηθεί όπου είναι δυνατή η σύγκριση τιμής στήλης.
Σημείωση: Παρόμοια με το LIKE, μπορούμε επίσης να χρησιμοποιήσουμε την αρνητική παραλλαγή της, η οποία είναι 'ΔΕΝ Αρέσει'. Έτσι, σε αυτήν την περίπτωση, αντί να επιστρέφετε τα αποτελέσματα που ταιριάζουν, τα ερωτήματα με τον τελεστή 'NOT LIKE' θα επιστρέψουν αποτελέσματα που δεν ταιριάζουν.
Μοτίβα αντιστοίχισης MySQL
Ο χειριστής LIKE μπορεί να χρησιμοποιηθεί μαζί με 2 τύπους μοτίβων. Αυτά αναφέρονται στον παρακάτω πίνακα:
Πρότυπο | |
---|---|
% (Ποσοστό) | Ταιριάξτε οποιονδήποτε αριθμό χαρακτήρων (συμπεριλαμβανομένου καθόλου χαρακτήρα) |
_ (Κατω παυλα) | Ταιριάζει με έναν χαρακτήρα |
Τώρα θα δούμε μερικά παραδείγματα χρησιμοποιώντας και τα δύο μοτίβα.
% Μοτίβο αντιστοίχισης
Το% pattern χρησιμοποιείται όταν θέλετε να ταιριάξετε 0 ή περισσότερους χαρακτήρες μετά ή πριν από την τοποθέτησή του.
Για παράδειγμα: αν θέλετε να αντιστοιχίσετε μια συμβολοσειρά 'αυτό' από μια στήλη με ονόματα υπαλλήλων. Ας υποθέσουμε ότι υπάρχουν ονόματα όπως - Amit, Anchit, Arpit, Nikita, Smith κ.λπ. Μπορούμε να δούμε ότι όλα τα ονόματα έχουν το υπόστρωμα «it». Αλλά η θέση τους είναι διαφορετική.
Ας υποθέσουμε ότι το όνομα της στήλης είναι ονόματα και το όνομα του πίνακα είναι ονόματα μαθητή.
Χρησιμοποιήστε τα παρακάτω δείγματα σεναρίων δημιουργίας δεδομένων για να συμπληρώσετε τη βάση δεδομένων:
CREATE TABLE student_names (name VARCHAR(100)); INSERT INTO student_names VALUES('Amit'),('Ankit'),('Smith'),('Nikita'),('Mohit');
Ας δούμε πώς μπορούμε να χρησιμοποιήσουμε το μοτίβο% Match.
SELECT * FROM student_names WHERE name LIKE '%it%'
Παραγωγή:
όνομα |
---|
Έιτς |
Ankit |
Σιδηρουργός |
Νικήτα |
Μοχάτ |
Τώρα αυτό σημαίνει ότι μπορεί να ταιριάξει με μια συμβολοσειρά που έχει το υπόστρωμα «it» σε οποιαδήποτε τοποθεσία και μπορεί να υπάρχει αριθμός χαρακτήρων πριν και μετά τον αγώνα. Μπορείτε να δείτε ότι όλα τα αντίστοιχα ονόματα επιστρέφονται ως έξοδο.
Ξαναγράψτε το ερώτημα για να ταιριάζουν μόνο αυτά τα ονόματα που τελειώνουν με το υπόστρωμα «it».
SELECT * FROM student_names WHERE name LIKE '%it'
Εδώ λοιπόν, αφαιρέσαμε το τελικό σύμβολο «%» και έχουμε τοποθετήσει τη συμβολοσειρά «it» στο τέλος. Αυτό το μοτίβο θα επέτρεπε οποιονδήποτε αριθμό χαρακτήρων πριν από το 'αυτό', αλλά η συμβολοσειρά πρέπει να τελειώνει με το υπόστρωμα 'αυτό'.
Έξοδος του παραπάνω ερωτήματος:
όνομα |
---|
Έιτς |
Ankit |
Μοχάτ |
Σημείωση: Είναι σημαντικό να σημειωθεί εδώ ότι το μοτίβο που αναφέρεται χρησιμοποιώντας το χαρακτήρα «%» δεν είναι κεφαλαίο. Έτσι, για το παραπάνω παράδειγμα, αντί για '% it' θα μπορούσαμε να χρησιμοποιήσουμε το '% IT' ή το '% It', η έξοδος θα παρέμενε η ίδια.
_Το μοτίβο αντιστοίχισης
Ας ρίξουμε μια ματιά στο πώς μπορούμε να χρησιμοποιήσουμε το μοτίβο αντιστοίχισης «_». Γνωρίζουμε ότι το '_' επιτρέπει ακριβώς έναν χαρακτήρα.
Ας υποθέσουμε ότι θέλουμε να κάνουμε ερώτημα και για τα 5 ονόματα γραμμάτων από τον ίδιο πίνακα (student_names).
Για να χρησιμοποιήσουμε το μοτίβο αντιστοίχισης «_» σε αυτήν την περίπτωση, έχουμε ορίσει πέντε _ (κάτω παύλες) μαζί με το μοτίβο LIKE που θα ταιριάζει μόνο σε αυτά τα ονόματα με μήκος 5 χαρακτήρων.
SELECT * FROM student_names WHERE name LIKE '_____'
Παραγωγή:
όνομα |
---|
Ankit |
Μοχάτ |
Σιδηρουργός |
Ας δούμε ένα άλλο παράδειγμα. Ας υποθέσουμε ότι θέλουμε να βρούμε και τα 5 ονόματα γραμμάτων που τελειώνουν με το υπόστρωμα «αυτό»
SELECT * FROM student_names WHERE name LIKE '___it'
Εδώ χρησιμοποιήσαμε 3 «_» (κάτω παύλες) και το πραγματικό substring που πρέπει να ταιριάζει.
Παραγωγή:
όνομα |
---|
Ankit |
Μοχάτ |
Σιδηρουργός |
Συνδυασμός% And _ Pattern Matcher
Σε αυτήν την ενότητα, θα συζητήσουμε πώς μπορούμε να ταιριάξουμε τους συνδυασμούς μοτίβου% και _.
τι είναι το καλύτερο πρόγραμμα λήψης μουσικής για Android
Ας υποθέσουμε ότι θέλουμε να βρούμε όλα τα ονόματα που έχουν το 'substring' και μπορούν να έχουν ακριβώς 2 χαρακτήρες μετά τη λέξη 'it'
SELECT * FROM student_names WHERE name LIKE '%it_'
Εδώ έχουμε συνδυάσει μοτίβα% και _ match για να βρούμε τον ακριβή αγώνα.
Παραγωγή:
όνομα |
---|
Σιδηρουργός |
Νικήτα |
Χρησιμοποιώντας ΔΕΝ Αρέσει
NOT LIKE είναι η ακριβής άρνηση του τι επιστρέφει ο χειριστής LIKE. δηλ. θα επιστρέψει όλες τις εγγραφές / σειρές που δεν ταιριάζουν με την παράσταση μοτίβου-αντιστοίχισης.
Παράδειγμα: Ας υποθέσουμε ότι θέλουμε να βρούμε όλα τα ονόματα που δεν έχουν 4 χαρακτήρες.
SELECT * FROM student_names WHERE name NOT LIKE '____'
Παραγωγή:
όνομα |
---|
Ankit |
Σιδηρουργός |
Νικήτα |
Μοχάτ |
Μπορείτε να δείτε στην παραπάνω έξοδο, επιστρέφει μόνο εκείνα τα ονόματα που δεν έχουν μήκος 4 χαρακτήρων.
Χρησιμοποιώντας το MySQL LIKE με χαρακτήρα ESCAPE
Εδώ θα δούμε πώς μπορούμε να χρησιμοποιήσουμε χαρακτήρες ESCAPE μαζί με το μοτίβο matcher.
Ας υποθέσουμε ότι σε μια υποθετική κατάσταση έχουμε ονόματα που περιέχουν στην πραγματικότητα% και _ χαρακτήρες και θέλουμε να βρούμε αυτά τα ονόματα, τότε πρέπει πραγματικά να ταιριάσουμε% & _. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας έναν χαρακτήρα διαφυγής.
Σημείωση: Η προεπιλεγμένη τιμή του χαρακτήρα διαφυγής είναι «» (ανάστροφη κάθετο)
Προσθέστε ορισμένα δεδομένα στους πίνακες ονομάτων μαθητών που περιέχουν ονόματα με χαρακτήρες% και _.
INSERT INTO student_names VALUES('Darre%n'),('Julia_Roberts'),('Dane_Sherman%');
Ακολουθούν μερικά παραδείγματα για να το κατανοήσετε καλύτερα.
# 1) Βρείτε όλα τα ονόματα που έχουν σύμβολο%.
SELECT * FROM student_names WHERE name LIKE '%\%%'
Παραγωγή:
όνομα |
---|
Darre% n |
Dane_Sherman% |
#δύο) Βρείτε όλα τα ονόματα που έχουν ένα σύμβολο _
SELECT * FROM student_names WHERE name LIKE '%\_%'
Παραγωγή:
όνομα |
---|
Τζούλια_ Ρόμπερτς |
Dane_Sherman% |
Και στα δύο παραπάνω παραδείγματα, μπορείτε να δείτε ότι χρησιμοποιήσαμε έναν χαρακτήρα διαφυγής για να αναφέρουμε τους χαρακτήρες% και _ - δηλαδή για την αντιστοίχιση ενός ίδιου του χαρακτήρα%, έχουμε χρησιμοποιήσει έναν χαρακτήρα διαφυγής πριν από το σύμβολο% - δηλαδή, όπως '\%'
Χρησιμοποιώντας έναν χαρακτήρα διαφυγής της δικής σας επιλογής
Τώρα ας προσπαθήσουμε να επεκτείνουμε το προηγούμενο παράδειγμα.
Η MySQL σάς επιτρέπει να καθορίσετε τον δικό σας χαρακτήρα ESCAPE που θα πρέπει να χρησιμοποιεί η MySQL κατά την εκτέλεση της αναζήτησης αντιστοίχισης μοτίβων.
Ας προσπαθήσουμε να ενημερώσουμε τον χαρακτήρα Escape σε '!' Αντί για την προεπιλεγμένη τιμή ''
SELECT * FROM student_names WHERE name LIKE '%!_%' ESCAPE '!'
Παραγωγή:
όνομα |
---|
Τζούλια_ Ρόμπερτς |
Dane_Sherman% |
Στο παραπάνω παράδειγμα, έχουμε αντικαταστήσει τον χαρακτήρα διαφυγής στο '!' Και χρησιμοποιήσαμε τον ίδιο στο μοτίβο '%! _%' - όπου θέλουμε να αντιστοιχίσουμε έναν χαρακτήρα '_' στο όνομα.
Συχνές Ερωτήσεις
Ε # 1) Τι σημαίνει %% στο SQL;
Απάντηση: Το '%%' δεν θα ταιριάζει με κάτι συγκεκριμένο. Είναι ισοδύναμο με μόλις 1% χαρακτήρα. Αν θέλετε να αντιστοιχίσετε τον ίδιο τον χαρακτήρα '%' στην τιμή της στήλης, μπορείτε να τον χρησιμοποιήσετε με έναν χαρακτήρα διαφυγής που έχει μια προεπιλεγμένη τιμή '.
Ας υποθέσουμε ότι θέλετε να αντιστοιχίσετε μια τιμή στήλης με χαρακτήρα '%', μπορείτε να γράψετε την αντιστοίχιση μοτίβου ως - LIKE '% %%' (παρατηρήστε μια επιπλέον ανάστροφη κάθετο πριν από τον χαρακτήρα μεσαίου ποσοστού (%).
Q # 2) Τι είναι το μπαλαντέρ στη MySQL;
Απάντηση: Ο χειριστής MySQL LIKE λειτουργεί με 2 χαρακτήρες μπαλαντέρ στη MySQL για την επίτευξη διαφορετικών τρόπων αντιστοίχισης προτύπων.
πώς να προσθέσετε στοιχεία σε έναν πίνακα java
Αυτά είναι:
- % - Θα ταιριάζει με οποιονδήποτε αριθμό χαρακτήρων (συμπεριλαμβανομένου του μηδέν)
- _ - Θα ταιριάζει ακριβώς με έναν χαρακτήρα
Q # 3) Πώς μπορώ να γράψω ένα LIKE ερώτημα στη MySQL;
Απάντηση: Το LIKE είναι ένας απλός χειριστής που χρησιμοποιείται γενικά μαζί με τον όρο WHERE σε ένα ερώτημα SELECT. Χρησιμοποιείται για να ταιριάζει με τις τιμές της στήλης με το καθορισμένο μοτίβο.
Παράδειγμα: Ας υποθέσουμε ότι υπάρχει ένας πίνακας με στοιχεία_επιλογής και έχει μια στήλη με όνομα διεύθυνση που περιέχει αριθμό οικίας, όνομα δρόμου κ.λπ. Θέλετε να μάθετε όλους τους υπαλλήλους που έχουν οδό ως 'Oxford Lane' ως διεύθυνση.
Μπορούμε να χρησιμοποιήσουμε τον τελεστή LIKE για να γράψουμε ένα τέτοιο ερώτημα.
SELECT * FROM employee_details WHERE address LIKE '%Oxford Lane%'
Παρακαλούμε να σημειώσετε ότι τα σχέδια String είναι αδιάφορη υπόθεση ενώ ταιριάζει με την καθορισμένη έκφραση αντιστοίχισης.
Q # 4) Πώς να καθορίσετε έναν διαφορετικό χαρακτήρα Escape μαζί με τον χειριστή LIKE;
Απάντηση: Η MySQL παρέχει έναν τρόπο καθορισμού ενός προσαρμοσμένου χαρακτήρα Escape που θα αντικαταστήσει τον προεπιλεγμένο, δηλαδή
Εδώ είναι ένα παράδειγμα που θα άλλαζε τον χαρακτήρα διαφυγής σε «!» Για την εκτέλεση του ερωτήματος.
SELECT * FROM employee_details WHERE address LIKE '%!_%' ESCAPE '!'
Στο παραπάνω ερώτημα, έχουμε αναφέρει το '!' Ως χαρακτήρα διαφυγής και χρησιμοποιήσαμε το ίδιο στην έκφραση του αγώνα.
Ε # 5) Πώς να ταιριάξετε έναν πραγματικό χαρακτήρα% ή _ χρησιμοποιώντας τον χειριστή LIKE;
Απάντηση: Οι χαρακτήρες όπως το% και _ είναι ειδικοί χαρακτήρες μπαλαντέρ, οι οποίοι όταν πρέπει να ταιριάζουν ως μέρος της συμβολοσειράς πρέπει να ξεφύγουν.
Ο προεπιλεγμένος χαρακτήρας διαφυγής είναι «» και θα πρέπει να χρησιμοποιηθεί λίγο πριν από την αναφορά του χαρακτήρα μπαλαντέρ.
Ας υποθέσουμε ότι θέλουμε να αντιστοιχίσουμε τον χαρακτήρα «_» με μια δεδομένη τιμή στήλης και, στη συνέχεια, μπορούμε να γράψουμε την έκφραση αντιστοίχισης ως - ΑΡΕΣΕΙ '%\_%'
συμπέρασμα
Σε αυτό το σεμινάριο, μάθαμε για τους διαφορετικούς τρόπους με τους οποίους μπορούμε να χρησιμοποιήσουμε τον τελεστή LIKE (ή την αρνητική έκδοση, δηλαδή ΔΕΝ Αρέσει).
Συζητήσαμε επίσης τους υποστηριζόμενους χαρακτήρες μπαλαντέρ, δηλαδή _ και% και πώς μπορούν να διαφύγουν εάν πρέπει να είναι μέρος της συμβολοσειράς για αναζήτηση / αντιστοίχιση.
Ο χειριστής LIKE είναι μια ισχυρή λειτουργικότητα που παρέχεται από τη MySQL και χρησιμοποιείται γενικά για το φιλτράρισμα εγγραφών, ενώ ερωτάται μεγάλα σύνολα δεδομένων.
Συνιστώμενη ανάγνωση
- MySQL Δημιουργία εκπαιδευτικού προγράμματος με παραδείγματα κώδικα
- MySQL UNION - Πλήρης οδηγός με παραδείγματα Union
- MySQL Δημιουργία εκπαιδευτικού πίνακα με παραδείγματα
- Εισαγωγή MySQL σε πίνακα - Εισαγωγή σύνταξης δήλωσης και παραδείγματα
- Unix Cat Command Syntax, Επιλογές με παραδείγματα
- C # Regex Tutorial: Τι είναι μια κανονική έκφραση C #
- C ++ regex Tutorial: Κανονικές εκφράσεις στο C ++ με παραδείγματα
- Εκπαιδευτικό πρόγραμμα Java Regex με παραδείγματα κανονικής έκφρασης