Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 20728|Svare: 0

[Kilde] Som fuzzy query i Linq til SQL

[Kopier lenke]
Publisert på 07.09.2015 23:16:28 | | |
Funksjonen til Like er litt som i, men retningen har endret seg. Hva betyr det? Du gir en streng og ser etter et felt i dataene som inneholder denne strengen. Det vil si at en gitt streng er en delmengde av et felt. SQL scrip{filter}t er skrevet slik.


Velg * fra tabellen hvor jeg liker '%AD%'
Velg * fra tabellen hvor jeg liker '%AD'
Velg * fra tabellen hvor jeg liker 'AD%'
Prosenten ovenfor er et jokerkort, som indikerer at feltet inneholder en verdi, og den ukjente posisjonen erstattes med %. Den første er å indikere at midtdelen er e.Kr., og at de to endene er uklare. Den andre er AD på slutten, og den forrige er uklar. Den tredje, derimot, begynner med AD og slutter uklart. Den tilsvarende Linq-uttalelsen er:


var q = (fra c i db. Kunder
hvor c.CustomerID.Contains("ROUT")
velg c). ToList();
SQL-en den genererer er


VELG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [Kontaktnavn], [t0]. [ContactT
itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmedlem
prøv], [t0]. [Telefon], [t0]. [Faks]
FRA [dbo]. [Kunder] AS [t0]
HVOR [t0]. [Kunde-ID] SOM @p0
-- @p0: Inndatastreng (størrelse = 6; Prec = 0; Skala = 0) [%ROUT%]
Avslutning med ISSA, hodejoker:


var q = (fra c i db. Kunder
hvor c.CustomerID.EndsWith("ISSA")
velg c). ToList();
SQL-en den genererer er


VELG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [Kontaktnavn], [t0]. [ContactT
itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmedlem
prøv], [t0]. [Telefon], [t0]. [Faks]
FRA [dbo]. [Kunder] AS [t0]
HVOR [t0]. [Kunde-ID] SOM @p0
-- @p0: Inndatastreng (størrelse = 5; Prec = 0; Skala = 0) [%ISSA]
Starter med ARO, hale-wildcard:


var q = (fra c i db. Kunder
hvor c.CustomerID.StartsWith("ARO")
velg c). ToList();
SQL-en den genererer er


VELG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [Kontaktnavn], [t0]. [ContactT
itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmedlem
prøv], [t0]. [Telefon], [t0]. [Faks]
FRA [dbo]. [Kunder] AS [t0]
HVOR [t0]. [Kunde-ID] SOM @p0
-- @p0: Inndatastreng (størrelse = 4; Prec = 0; Skala = 0) [ARO%]

Linq tilbyr også en metode kalt SqlMethods.Like, som krever at System.Data.Linq.SqlClient-navnerommet legges til først. De tre ovennevnte kan skrives


var q = (fra c i db. Kunder
hvor SqlMethods.Like(c.CustomerID, "%ROUT%")
velg c). ToList();
Her må du fylle inn jokerkortet selv for å fortelle Linq hvordan du matchet. Som hva


var q = (fra c i db. Kunder
hvor SqlMethods.Like(c.CustomerID, "%ISSA")
velg c). ToList();
Et annet eksempel:


var q = (fra c i db. Kunder
hvor SqlMethods.Like(c.CustomerID, "ARO%")
velg c). ToList();
Det mest fantastiske med SqlMethods.Like er at du kan implementere wildcards hvor som helst med dine egne definerte wildcard-uttrykk. Som hva


var q = (fra c i db. Kunder
hvor SqlMethods.Like(c.CustomerID, "A%O%T")
velg c). ToList();
SQL-en den genererer er


VELG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [Kontaktnavn], [t0]. [ContactT
itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmedlem
prøv], [t0]. [Telefon], [t0]. [Faks]
FRA [dbo]. [Kunder] AS [t0]
HVOR [t0]. [Kunde-ID] SOM @p0
-- @p0: Inndatastreng (størrelse = 5; Prec = 0; Skala = 0) [A%O%T]

Det mest vanlige er å vite at den starter med A og slutter på T, kjenner verdien O i midten, og ikke vet noe annet. Bare bruk dette.
SQL Server definerer fire jokerkort, som alle er tilgjengelige her. De er:
Eksempel på jokertegn Descrip{filter}tion
% Enhver streng med null eller flere tegn. HVOR tittel SOM '%computer%' finner alle boktitler med ordet 'computer' hvor som helst i boktittelen.
_ (understrek) Hvilken som helst enkelt karakter. DER au_fname LIKE '_ean' finner alle firebokstavers fornavn som ender på ean (Dean, Sean, og så videre).
[ ] Ethvert enkelt tegn innenfor det angitte området ([a-f]) eller mengden ([abcdef]). DER au_lname SOM '[C-P]arsen' finner forfatterens etternavn som ender på arsen og begynner på et hvilket som helst enkelt tegn mellom C og P, for eksempel Carsen, Larsen, Karsen, og så videre.
[^] Ethvert enkelt tegn som ikke er innenfor det angitte området ([^a-f]) eller mengden ([^abcdef]). HVOR au_lname SOM 'de[^l]%' alle forfatterens etternavn som begynner med de, og hvor den påfølgende bokstaven ikke er l.

% representerer en streng med null lengde eller hvilken som helst lengde. _ indikerer en karakter. [] indikerer et tegn innenfor et rekkeviddeområde. [^] indikerer et tegn som ikke er innenfor et bestemt område
Som hva:


var q = (fra c i db. Kunder
hvor SqlMethods.Like(c.CustomerID, "A_O_T")
velg c). ToList();
Bare bruk _ for å representere en karakter. Den genererte SQL-en er:


VELG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [Kontaktnavn], [t0]. [ContactT
itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmedlem
prøv], [t0]. [Telefon], [t0]. [Faks]
FRA [dbo]. [Kunder] AS [t0]
HVOR [t0]. [Kunde-ID] SOM @p0
-- @p0: Inndatastreng (størrelse = 5; Prec = 0; Skala = 0) [A_O_T]

For Not Like er det også veldig enkelt, bare legg til noe tull.


var q = (fra c i db. Kunder
Hvor! SqlMethods.Like(c.CustomerID, "A_O_T")
velg c). ToList();

SqlMethods.Like har også en parameter kalt escape character, som vil bli oversatt til en setning som følger.


VELG kolonner FRA tabell HVOR
kolonne SOM '%\%%' ESCAPE '\'
Escape er fordi et felt inneholder spesialtegn, som %,_ [ ], som brukes som jokere. Det er her Escape kommer inn. Dette er en SQL Server-greie.





Foregående:Nettstedets ytelsesoptimalisering: Detaljert forklaring av cache-kontrollinnstillinger
Neste:Ruijie har alltid vært bestemt på hva som skjer
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com