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.
|