Virkemåden af Like er lidt som i, men retningen har ændret sig. Hvad betyder det? Du giver en streng og leder efter et felt i dataene, der indeholder denne streng. Det vil sige, en given streng er en delmængde af et legeme. SQL scrip{filter}t er skrevet sådan her.
Vælg * fra tabellen, hvor jeg kunne lide '%AD%' Vælg * fra tabel, hvor jeg gerne vil have '%AD' Vælg * fra tabel, hvor jeg kunne lide 'AD%' Procenten ovenfor er et jokerkort, der angiver, at feltet indeholder en værdi, og den ukendte position erstattes af %. Den første er at angive, at midtersektionen er AD, og de to ender er uklare. Den anden er AD til sidst, og den forrige er uklar. Den tredje begynder derimod med AD og slutter uklart. Den tilsvarende Linq-sætning er:
var q = (fra c i db. Kunder hvor c.CustomerID.Contains("ROUT") vælg c). ToList(); Den SQL, den genererer, er
VÆLG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [KontaktNavn], [t0]. [KontaktT itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmand] prøv], [t0]. [Telefon], [t0]. [Fax] FRA [dbo]. [Kunder] AS [t0] HVOR [t0]. [Kunde-ID] KAN GODT LIDE @p0 -- @p0: Input-streng (størrelse = 6; Prec = 0; Skala = 0) [%UDKØRSEL%] Afslutning med ISSA, hoved-wildcard:
var q = (fra c i db. Kunder hvor c.CustomerID.EndsWith("ISSA") vælg c). ToList(); Den SQL, den genererer, er
VÆLG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [KontaktNavn], [t0]. [KontaktT itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmand] prøv], [t0]. [Telefon], [t0]. [Fax] FRA [dbo]. [Kunder] AS [t0] HVOR [t0]. [Kunde-ID] KAN GODT LIDE @p0 -- @p0: Input-streng (størrelse = 5; Prec = 0; Skala = 0) [%ISSA] Startende med ARO, hale-jokerkort:
var q = (fra c i db. Kunder hvor c.CustomerID.StartsWith("ARO") vælg c). ToList(); Den SQL, den genererer, er
VÆLG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [KontaktNavn], [t0]. [KontaktT itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmand] prøv], [t0]. [Telefon], [t0]. [Fax] FRA [dbo]. [Kunder] AS [t0] HVOR [t0]. [Kunde-ID] KAN GODT LIDE @p0 -- @p0: Inputstreng (størrelse = 4; Prec = 0; Skala = 0) [ARO%]
Linq tilbyder også en metode kaldet SqlMethods.Like, som kræver, at System.Data.Linq.SqlClient-navnerummet tilføjes først. De tre ovenstående kan skrives
var q = (fra c i db. Kunder hvor SqlMethods.Like(c.CustomerID, "%ROUT%") vælg c). ToList(); Her skal du selv udfylde jokerkortet for at fortælle Linq, hvordan I matchede. Som hvad
var q = (fra c i db. Kunder hvor SqlMethods.Like(c.CustomerID, "%ISSA") vælg c). ToList(); Et andet eksempel:
var q = (fra c i db. Kunder hvor SqlMethods.Like(c.CustomerID, "ARO%") vælg c). ToList(); Det mest fantastiske ved SqlMethods.Like er, at du kan implementere wildcards hvor som helst med dine egne definerede wildcard-udtryk. Som hvad
var q = (fra c i db. Kunder hvor SqlMethods.Like(c.CustomerID, "A%O%T") vælg c). ToList(); Den SQL, den genererer, er
VÆLG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [KontaktNavn], [t0]. [KontaktT itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmand] prøv], [t0]. [Telefon], [t0]. [Fax] FRA [dbo]. [Kunder] AS [t0] HVOR [t0]. [Kunde-ID] KAN GODT LIDE @p0 -- @p0: Input-streng (størrelse = 5; Prec = 0; Skala = 0) [A%O%T]
Det mest standard er at vide, at den starter med A og slutter med T, kender værdien O i midten, og ikke ved noget andet. Brug bare dette. SQL Server definerer fire jokere, som alle er tilgængelige her. De er: Eksempel på Wildcard-tegn Descrip{filter}tion % Enhver streng med nul eller flere tegn. HVOR titel SOM '%computer%' finder alle bogtitler med ordet 'computer' hvor som helst i bogtitlen. _ (understregning) Enhver enkelt karakter. HVOR au_fname KAN lide '_ean' finder alle firebogstavsfornavne, der ender på ean (Dean, Sean osv.). [ ] Ethvert enkelt tegn inden for det specificerede interval ([a-f]) eller sæt ([abcdef]). HVOR au_lname LIGESOM '[C-P]arsen' finder forfatterens efternavne, der ender på arsen og begynder på et hvilket som helst enkelt tegn mellem C og P, for eksempel Carsen, Larsen, Karsen osv. [^] Ethvert enkelt tegn, der ikke er inden for det specificerede interval ([^a-f]) eller sæt ([^abcdef]). HVOR au_lname SOM 'de[^l]%' alle forfatternavne, der begynder med de, og hvor det følgende bogstav ikke er l.
% repræsenterer en streng med nul længde eller enhver længde. _ indikerer en karakter. [] angiver et tegn i et rækkeviddeområde. [^] angiver et tegn, der ikke er inden for et bestemt område Som hvad:
var q = (fra c i db. Kunder hvor SqlMethods.Like(c.CustomerID, "A_O_T") vælg c). ToList(); Brug bare _ til at repræsentere en karakter. Den genererede SQL er:
VÆLG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [KontaktNavn], [t0]. [KontaktT itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmand] prøv], [t0]. [Telefon], [t0]. [Fax] FRA [dbo]. [Kunder] AS [t0] HVOR [t0]. [Kunde-ID] KAN GODT LIDE @p0 -- @p0: Input-streng (størrelse = 5; Prec = 0; Skala = 0) [A_O_T]
For Not Like er det også meget simpelt, bare tilføj noget vrøvl.
var q = (fra c i db. Kunder hvor! SqlMethods.Like(c.CustomerID, "A_O_T") vælg c). ToList();
SqlMethods.Like har også en parameter kaldet escape character, som vil blive oversat til en sætning som følger.
VÆLG kolonner FRA tabel HVOR kolonne LIGESOM '%\%%' ESCAPE '\' escape skyldes, at et felt indeholder specialtegn, såsom %,_ [ ], som bruges som jokere. Det er her, Escape kommer ind i billedet. Det er en SQL Server-ting.
|