MySQL Εκμάθηση χαρακτήρων μπαλαντέρ: Μου αρέσει, ΟΧΙ Μου αρέσει, Απόδραση, ( % ), ( _ )

Τι είναι MySQL Μπαλαντέρ;

MySQL Μπαλαντέρ είναι χαρακτήρες που βοηθούν τα δεδομένα αναζήτησης να ταιριάζουν με πολύπλοκα κριτήρια. Οι χαρακτήρες μπαλαντέρ χρησιμοποιούνται σε συνδυασμό με τον τελεστή σύγκρισης LIKE ή με τον τελεστή σύγκρισης NOT LIKE.

Γιατί να χρησιμοποιήσετε WildCards;

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

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

που είναι εγγεγραμμένος από το Τέξας, μπορείτε να χρησιμοποιήσετε την ακόλουθη δήλωση SELECT μαζί με την ρήτρα WHERE για να λάβετε τις επιθυμητές πληροφορίες.

SELECT * FROM members WHERE postal_address = 'Austin , TX' OR  postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';

Όπως μπορείτε να δείτε από το παραπάνω ερώτημα, το «ΟΤΙ ρήτρα» γίνεται πολύπλοκο. Ωστόσο, η χρήση χαρακτήρων μπαλαντέρ απλοποιεί το ερώτημα καθώς μπορούμε να χρησιμοποιήσουμε κάτι απλό όπως το σενάριο που φαίνεται παρακάτω.

SELECT * FROM  members  WHERE postal_address  like '% TX';

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

Τύποι μπαλαντέρ

% το ποσοστό

% ο χαρακτήρας ποσοστού χρησιμοποιείται για τον καθορισμό ενός μοτίβου μηδέν (0) ή περισσότερους χαρακτήρες. Έχει την εξής βασική σύνταξη.

SELECT statements... WHERE fieldname LIKE 'xxx%';

ΕΔΩ

  • "Δήλωση SELECT…» είναι η τυπική εντολή SQL SELECT.
  • "WHERE" είναι η λέξη-κλειδί που χρησιμοποιείται για την εφαρμογή του φίλτρου.
  • Το "LIKE" είναι ο τελεστής σύγκρισης που χρησιμοποιείται σε συνδυασμό με χαρακτήρες μπαλαντέρ
  • Το 'xxx' είναι οποιοδήποτε καθορισμένο αρχικό μοτίβο, όπως ένας μεμονωμένος χαρακτήρας ή περισσότεροι και το "%" αντιστοιχεί σε οποιονδήποτε αριθμό χαρακτήρων ξεκινώντας από το μηδέν (0).

Για να εκτιμήσουμε πλήρως την παραπάνω δήλωση, ας δούμε ένα πρακτικό παράδειγμα

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

SELECT * FROM movies WHERE title LIKE '%code%';

Εκτέλεση του παραπάνω σεναρίου στο MySQL πάγκος εργασίας ενάντια στο myflixdb μας δίνει τα αποτελέσματα που φαίνονται παρακάτω.

movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL
7 Davinci Code NULL NULL 6

Σημειώστε ότι ακόμα κι αν η λέξη-κλειδί αναζήτησης "code" εμφανίζεται στην αρχή ή στο τέλος του τίτλου, εξακολουθεί να επιστρέφεται στο σύνολο αποτελεσμάτων μας. Αυτό συμβαίνει επειδή ο κώδικάς μας περιλαμβάνει οποιονδήποτε αριθμό χαρακτήρων στην αρχή και, στη συνέχεια, ταιριάζει με το μοτίβο "κώδικας" ακολουθούμενο από οποιονδήποτε αριθμό χαρακτήρων στο τέλος.

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

SELECT * FROM movies WHERE title LIKE '%code';

Εκτέλεση του παραπάνω σεναρίου στο MySQL Ο πάγκος εργασίας έναντι του myflixdb μας δίνει τα αποτελέσματα που φαίνονται παρακάτω.

movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

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

Ας μεταθέσουμε τώρα τον μπαλαντέρ ποσοστού στο τέλος του καθορισμένου μοτίβου προς αντιστοίχιση. Το τροποποιημένο σενάριο φαίνεται παρακάτω.

SELECT * FROM movies WHERE title LIKE 'code%';
Εκτέλεση του παραπάνω σεναρίου στο MySQL Ο πάγκος εργασίας έναντι του myflixdb μας δίνει τα αποτελέσματα που φαίνονται παρακάτω.
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL

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

_ μπαλαντέρ υπογράμμισης

Ο χαρακτήρας μπαλαντέρ υπογράμμισης χρησιμοποιείται για να ταιριάζει ακριβώς με έναν χαρακτήρα. Ας υποθέσουμε ότι θέλουμε να αναζητήσουμε όλες τις ταινίες που κυκλοφόρησαν τα έτη 200x, όπου το x είναι ακριβώς ένας χαρακτήρας που θα μπορούσε να έχει οποιαδήποτε τιμή. Θα χρησιμοποιούσαμε την μπαλαντέρ υπογράμμισης για να το πετύχουμε. Το παρακάτω σενάριο επιλέγει όλες τις ταινίες που κυκλοφόρησαν το έτος "200x"

SELECT * FROM movies WHERE year_released LIKE '200_';

Εκτέλεση του παραπάνω σεναρίου στο MySQL Ο πάγκος εργασίας έναντι του myflixdb μας δίνει τα αποτελέσματα που φαίνονται παρακάτω.

movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
9 Honey mooners Jhon Shultz 2005 8

Λάβετε υπόψη ότι μόνο οι ταινίες που έχουν 200 follows από οποιονδήποτε χαρακτήρα του έτους που κυκλοφόρησε έχουν επιστραφεί στο σύνολο αποτελεσμάτων μας. Αυτό συμβαίνει επειδή ο χαρακτήρας μπαλαντέρ υπογράμμισης ταίριαζε με το μοτίβο 200 που ακολουθείται από οποιονδήποτε μεμονωμένο χαρακτήρα

Οχι σαν

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

Ας υποθέσουμε ότι θέλουμε να πάρουμε ταινίες που δεν κυκλοφόρησαν το έτος 200x. Θα χρησιμοποιούσαμε τον λογικό τελεστή ΔΕΝ μαζί με τον χαρακτήρα μπαλαντέρ υπογράμμισης για να λάβουμε τα αποτελέσματά μας. Παρακάτω είναι το σενάριο που το κάνει αυτό.

SELECT * FROM movies WHERE year_released NOT LIKE '200_';

movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
4 Code Name Black Edgar Jimz 2010 NULL
8 Underworld-Awakeninh Michahel Eal 2012 6

Σημειώστε ότι μόνο ταινίες που δεν ξεκινούν με 200 το έτος που κυκλοφόρησαν έχουν επιστραφεί στο σετ αποτελεσμάτων μας. Αυτό συμβαίνει επειδή χρησιμοποιήσαμε τον λογικό τελεστή NOT στην αναζήτηση μοτίβων μπαλαντέρ.

Λέξη-κλειδί διαφυγής

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

Ας υποθέσουμε ότι θέλουμε να ελέγξουμε για τη συμβολοσειρά "67%" που μπορούμε να χρησιμοποιήσουμε.

LIKE '67#%%' ESCAPE '#';

Αν θέλουμε να αναζητήσουμε την ταινία "67% Ένοχος", μπορούμε να χρησιμοποιήσουμε το σενάριο που φαίνεται παρακάτω για να το κάνουμε.

SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';

Σημειώστε το διπλό "%%” στην ρήτρα LIKE, το πρώτο με κόκκινο “%" αντιμετωπίζεται ως μέρος της συμβολοσειράς προς αναζήτηση. Ο άλλος χρησιμοποιείται για να ταιριάζει με οποιονδήποτε αριθμό χαρακτήρων που ακολουθούν.

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

SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';

Περίληψη

  • Ισχυρά εργαλεία Like & Wildcards που βοηθούν στην αναζήτηση δεδομένων που ταιριάζουν με πολύπλοκα μοτίβα.
  • Υπάρχει ένας αριθμός μπαλαντέρ που περιλαμβάνει το ποσοστό, την υπογράμμιση και τη λίστα χαρακτήρων (δεν υποστηρίζεται από MySQL ) μεταξύ άλλων
  • Ο χαρακτήρας μπαλαντέρ ποσοστού χρησιμοποιείται για την αντιστοίχιση οποιουδήποτε αριθμού χαρακτήρων ξεκινώντας από το μηδέν (0) και περισσότερο.
  • Ο χαρακτήρας μπαλαντέρ υπογράμμισης χρησιμοποιείται για να ταιριάζει ακριβώς με έναν χαρακτήρα.