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

Άποψη: 20728|Απάντηση: 0

[Πηγή] Όπως το ασαφές ερώτημα στο Linq σε sql

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 7/9/2015 11:16:28 μ.μ. | | |
Η λειτουργία του 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.





Προηγούμενος:Βελτιστοποίηση απόδοσης ιστότοπου: Λεπτομερής επεξήγηση των ρυθμίσεων ελέγχου της προσωρινής μνήμης
Επόμενος:Ο Ruijie ήταν πάντα αποφασισμένος για το τι συμβαίνει
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com