Η λειτουργία του Like είναι λίγο σαν μέσα, αλλά η κατεύθυνση έχει αλλάξει. Τι σημαίνει? Δίνετε μια συμβολοσειρά και αναζητάτε ένα πεδίο στα δεδομένα που περιέχει αυτήν τη συμβολοσειρά. Δηλαδή, μια δεδομένη συμβολοσειρά είναι ένα υποσύνολο ενός πεδίου. Το Sql scrip{filter}t γράφεται έτσι.
Selec * από τον πίνακα όπου id όπως '%AD%' Επιλέξτε * από τον πίνακα όπου id όπως '%AD' Επιλογή * από τον πίνακα όπου id όπως "AD%" Το % παραπάνω είναι ένας χαρακτήρας μπαλαντέρ, που υποδεικνύει ότι το πεδίο περιέχει μια τιμή και η άγνωστη θέση αντικαθίσταται από %. Το πρώτο είναι να δείξει ότι το μεσαίο τμήμα είναι μ.Χ. και τα δύο άκρα είναι ασαφή. Το δεύτερο είναι AD στο τέλος και το προηγούμενο είναι ασαφές. Το τρίτο, αντίθετα, αρχίζει με AD και τελειώνει ασαφή. Η αντίστοιχη δήλωση Linq είναι:
var q = (από το c στο db. Πελάτες όπου c.CustomerID.Contains("ROUT") Επιλέξτε C). ToList(); Η SQL που δημιουργεί είναι
ΕΠΙΛΕΞΤΕ [t0]. [ΚωδΠελάτη], [t0]. [Επωνυμία_εταιρείας], [t0]. [Όνομα_επαφής], [t0]. [ΕπικοινωνίαΤ itle], [t0]. [Διεύθυνση], [t0]. [Πόλη], [t0]. [Περιοχή], [t0]. [ταχυδρομικόςκωδικός], [t0]. [Ο Κουν δοκιμάστε], [t0]. [Τηλέφωνο], [t0]. [Φαξ] ΑΠΟ [dbo]. [Πελάτες] AS [t0] ΟΠΟΥ [t0]. [Αναγνωριστικό πελάτη] ΣΑΝ @p0 -- @p0: συμβολοσειρά εισόδου (μέγεθος = 6; Πρεκ = 0; Κλίμακα = 0) [%ROUT%] Τελειώνοντας με ISSA, επικεφαλής μπαλαντέρ:
var q = (από το c στο db. Πελάτες όπου c.CustomerID.EndsWith("ISSA") Επιλέξτε C). ToList(); Η SQL που δημιουργεί είναι
ΕΠΙΛΕΞΤΕ [t0]. [ΚωδΠελάτη], [t0]. [Επωνυμία_εταιρείας], [t0]. [Όνομα_επαφής], [t0]. [ΕπικοινωνίαΤ itle], [t0]. [Διεύθυνση], [t0]. [Πόλη], [t0]. [Περιοχή], [t0]. [ταχυδρομικόςκωδικός], [t0]. [Ο Κουν δοκιμάστε], [t0]. [Τηλέφωνο], [t0]. [Φαξ] ΑΠΟ [dbo]. [Πελάτες] AS [t0] ΟΠΟΥ [t0]. [Αναγνωριστικό πελάτη] ΣΑΝ @p0 -- @p0: συμβολοσειρά εισόδου (μέγεθος = 5; Πρεκ = 0; Κλίμακα = 0) [%ISSA] Ξεκινώντας με ARO, μπαλαντέρ ουράς:
var q = (από το c στο db. Πελάτες όπου c.CustomerID.StartsWith("ARO") Επιλέξτε C). ToList(); Η SQL που δημιουργεί είναι
ΕΠΙΛΕΞΤΕ [t0]. [ΚωδΠελάτη], [t0]. [Επωνυμία_εταιρείας], [t0]. [Όνομα_επαφής], [t0]. [ΕπικοινωνίαΤ itle], [t0]. [Διεύθυνση], [t0]. [Πόλη], [t0]. [Περιοχή], [t0]. [ταχυδρομικόςκωδικός], [t0]. [Ο Κουν δοκιμάστε], [t0]. [Τηλέφωνο], [t0]. [Φαξ] ΑΠΟ [dbo]. [Πελάτες] AS [t0] ΟΠΟΥ [t0]. [Αναγνωριστικό πελάτη] ΣΑΝ @p0 -- @p0: συμβολοσειρά εισόδου (μέγεθος = 4; Πρεκ = 0; Κλίμακα = 0) [ARO%]
Το Linq παρέχει επίσης μια μέθοδο που ονομάζεται SqlMethods.Like, η οποία απαιτεί να προστεθεί πρώτα ο χώρος ονομάτων System.Data.Linq.SqlClient. Τα παραπάνω τρία μπορούν να γραφτούν
var q = (από το c στο db. Πελάτες όπου SqlMethods.Like(c.CustomerID, "%ROUT%") Επιλέξτε C). ToList(); Εδώ, πρέπει να συμπληρώσετε μόνοι σας τον χαρακτήρα μπαλαντέρ για να πείτε στον Linq πώς ταιριάξατε. Όπως αυτό που
var q = (από το c στο db. Πελάτες όπου SqlMethods.Like(c.CustomerID, "%ISSA") Επιλέξτε C). ToList(); Ένα άλλο παράδειγμα:
var q = (από το c στο db. Πελάτες όπου SqlMethods.Like(c.CustomerID, "ARO%") Επιλέξτε C). ToList(); Το πιο εκπληκτικό πράγμα για το SqlMethods.Like είναι ότι μπορείτε να εφαρμόσετε χαρακτήρες μπαλαντέρ οπουδήποτε με τις δικές σας καθορισμένες εκφράσεις μπαλαντέρ. Όπως αυτό που
var q = (από το c στο db. Πελάτες όπου SqlMethods.Like(c.CustomerID, "A%O%T") Επιλέξτε C). ToList(); Η SQL που δημιουργεί είναι
ΕΠΙΛΕΞΤΕ [t0]. [ΚωδΠελάτη], [t0]. [Επωνυμία_εταιρείας], [t0]. [Όνομα_επαφής], [t0]. [ΕπικοινωνίαΤ itle], [t0]. [Διεύθυνση], [t0]. [Πόλη], [t0]. [Περιοχή], [t0]. [ταχυδρομικόςκωδικός], [t0]. [Ο Κουν δοκιμάστε], [t0]. [Τηλέφωνο], [t0]. [Φαξ] ΑΠΟ [dbo]. [Πελάτες] AS [t0] ΟΠΟΥ [t0]. [Αναγνωριστικό πελάτη] ΣΑΝ @p0 -- @p0: συμβολοσειρά εισόδου (μέγεθος = 5; Πρεκ = 0; Κλίμακα = 0) [A%O%T]
Το πιο τυπικό πράγμα είναι να γνωρίζουμε ότι ξεκινά με Α και τελειώνει με Τ, γνωρίζει μια τιμή Ο στη μέση και δεν ξέρει τίποτα άλλο. Απλά χρησιμοποιήστε αυτό. Ο SQL Server ορίζει τέσσερις χαρακτήρες μπαλαντέρ, οι οποίοι είναι όλοι διαθέσιμοι εδώ. Αυτοί είναι: Χαρακτήρας μπαλαντέρ Descrip{filter}tion Παράδειγμα % Οποιαδήποτε συμβολοσειρά με μηδέν ή περισσότερους χαρακτήρες. Το WHERE title LIKE '%computer%' βρίσκει όλους τους τίτλους βιβλίων με τη λέξη 'computer' οπουδήποτε στον τίτλο του βιβλίου. _ (υπογράμμιση) Οποιοσδήποτε μεμονωμένος χαρακτήρας. Το WHERE au_fname LIKE '_ean' βρίσκει όλα τα ονόματα τεσσάρων γραμμάτων που τελειώνουν σε ean (Dean, Sean κ.ο.κ.). [ ] Οποιοσδήποτε μεμονωμένος χαρακτήρας εντός της καθορισμένης περιοχής ([a-f]) ή συνόλου ([abcdef]). ΟΠΟΥ au_lname LIKE '[C-P]arsen' βρίσκει επώνυμα συγγραφέων που τελειώνουν με arsen και αρχίζουν με οποιονδήποτε μεμονωμένο χαρακτήρα μεταξύ C και P, για παράδειγμα Carsen, Larsen, Karsen και ούτω καθεξής. [^] Οποιοσδήποτε μεμονωμένος χαρακτήρας που δεν βρίσκεται εντός του καθορισμένου εύρους ([^a-f]) ή του συνόλου ([^abcdef]). ΟΠΟΥ au_lname LIKE 'de[^l]%' όλα τα επώνυμα συγγραφέων που αρχίζουν με de και όπου το παρακάτω γράμμα δεν είναι l.
% αντιπροσωπεύει μια συμβολοσειρά μηδενικού μήκους ή οποιουδήποτε μήκους. _ υποδηλώνει έναν χαρακτήρα. Το [] υποδεικνύει έναν χαρακτήρα σε ένα εύρος εύρους. Το [^] υποδεικνύει έναν χαρακτήρα που δεν βρίσκεται σε ένα συγκεκριμένο εύρος Σαν τι:
var q = (από το c στο db. Πελάτες όπου SqlMethods.Like(c.CustomerID, "A_O_T") Επιλέξτε C). ToList(); Απλώς χρησιμοποιήστε το _ για να αναπαραστήσετε έναν χαρακτήρα. Η SQL που δημιουργείται είναι:
ΕΠΙΛΕΞΤΕ [t0]. [ΚωδΠελάτη], [t0]. [Επωνυμία_εταιρείας], [t0]. [Όνομα_επαφής], [t0]. [ΕπικοινωνίαΤ itle], [t0]. [Διεύθυνση], [t0]. [Πόλη], [t0]. [Περιοχή], [t0]. [ταχυδρομικόςκωδικός], [t0]. [Ο Κουν δοκιμάστε], [t0]. [Τηλέφωνο], [t0]. [Φαξ] ΑΠΟ [dbo]. [Πελάτες] AS [t0] ΟΠΟΥ [t0]. [Αναγνωριστικό πελάτη] ΣΑΝ @p0 -- @p0: συμβολοσειρά εισόδου (μέγεθος = 5; Πρεκ = 0; Κλίμακα = 0) [A_O_T]
Για το Not Like, είναι επίσης πολύ απλό, απλά προσθέστε μια ανοησία.
var q = (από το c στο db. Πελάτες Οπου ! SqlMethods.Like(c.CustomerID, "A_O_T") Επιλέξτε C). ToList();
Το SqlMethods.Like έχει επίσης μια παράμετρο που ονομάζεται χαρακτήρας διαφυγής, η οποία θα μεταφραστεί σε μια δήλωση όπως η παρακάτω.
ΕΠΙΛΟΓΗ στηλών ΑΠΟ τον πίνακα ΠΟΥ στήλη LIKE '%\%%' ESCAPE '\' Το Escape συμβαίνει επειδή ένα πεδίο περιέχει ειδικούς χαρακτήρες, όπως %,_ [ ], οι οποίοι χρησιμοποιούνται ως χαρακτήρες μπαλαντέρ. Εκεί μπαίνει το Escape. Αυτό είναι θέμα SQL Server.
|