Delovanje Like je nekoliko podobno kot in, vendar se je smer spremenila. Kaj to pomeni? Vnesete niz in v podatkih iščete polje, ki vsebuje ta niz. To pomeni, da je dani niz podmnožica polja. SQL scrip{filter}t je napisan takole.
Selec * iz tabele, kjer bi rad imel '%AD%' Selec * iz tabele, kjer bi želel '%AD' Selec * iz tabele, kjer bi rad imel 'AD%' Zgornji % je neznana karta, ki označuje, da polje vsebuje vrednost, neznana pozicija pa je zamenjana z % Prva pomeni, da je srednji del AD, in da sta oba konca nejasna. Druga je AD na koncu, prejšnja pa ni jasna. Tretja pa se nasprotno začne z AD in konča nejasno. Ustrezna Linqova izjava je:
var q = (iz c v db. Stranke kjer c.CustomerID.Contains("ROUT") Izberite C). ToList(); SQL, ki ga generira, je
IZBERI [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [KontaktT itle], [t0]. [Naslov], [t0]. [Mesto], [t0]. [Regija], [t0]. [PostalCode], [t0]. [Svetnik try], [t0]. [Telefon], [t0]. [Faks] IZ [dbo]. [Stranke] AS [t0] KJER [t0]. [CustomerID] KOT @p0 -- @p0: vhodni niz (velikost = 6; Prec = 0; Merilo = 0) [%ROUT%] Zaključek z ISSA, glavni nepredvidljivi znak:
var q = (iz c v db. Stranke kjer c.CustomerID.EndsWith("ISSA") Izberite C). ToList(); SQL, ki ga generira, je
IZBERI [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [KontaktT itle], [t0]. [Naslov], [t0]. [Mesto], [t0]. [Regija], [t0]. [PostalCode], [t0]. [Svetnik try], [t0]. [Telefon], [t0]. [Faks] IZ [dbo]. [Stranke] AS [t0] KJER [t0]. [CustomerID] KOT @p0 -- @p0: vhodni niz (velikost = 5; Prec = 0; Merilo = 0) [%ISSA] Začnimo z ARO, tail wildcard:
var q = (iz c v db. Stranke kjer c.CustomerID.StartsWith("ARO") Izberite C). ToList(); SQL, ki ga generira, je
IZBERI [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [KontaktT itle], [t0]. [Naslov], [t0]. [Mesto], [t0]. [Regija], [t0]. [PostalCode], [t0]. [Svetnik try], [t0]. [Telefon], [t0]. [Faks] IZ [dbo]. [Stranke] AS [t0] KJER [t0]. [CustomerID] KOT @p0 -- @p0: vhodni niz (velikost = 4; Prec = 0; Merilo = 0) [ARO%]
Linq prav tako ponuja metodo, imenovano SqlMethods.Like, ki zahteva najprej dodajanje imenskega prostora System.Data.Linq.SqlClient. Zgornje tri lahko zapišemo
var q = (iz c v db. Stranke kjer je SqlMethods.Like(c.CustomerID, "%ROUT%") Izberite C). ToList(); Tukaj moraš sam izpolniti nepredvidljivo karto, da Linqu poveš, kako si se ujemal. Kaj na primer
var q = (iz c v db. Stranke kjer SqlMethods.Like(c.CustomerID, "%ISSA") Izberite C). ToList(); Še en primer:
var q = (iz c v db. Stranke kjer SqlMethods.Like(c.CustomerID, "ARO%") Izberite C). ToList(); Najbolj neverjetno pri SqlMethods.Like je, da lahko wildcarde implementiraš kjerkoli s svojimi lastnimi definiranimi izrazi za wildcard. Kaj na primer
var q = (iz c v db. Stranke kjer je SqlMethods.Like(c.CustomerID, "A%O%T") Izberite C). ToList(); SQL, ki ga generira, je
IZBERI [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [KontaktT itle], [t0]. [Naslov], [t0]. [Mesto], [t0]. [Regija], [t0]. [PostalCode], [t0]. [Svetnik try], [t0]. [Telefon], [t0]. [Faks] IZ [dbo]. [Stranke] AS [t0] KJER [t0]. [CustomerID] KOT @p0 -- @p0: vhodni niz (velikost = 5; Prec = 0; Merilo = 0) [A%O%T]
Najbolj standardno je vedeti, da se začne na A in konča na T, pozna vrednost O na sredini in ne pozna ničesar drugega. Samo uporabi to. SQL Server definira štiri wildcarde, ki so vse na voljo tukaj. To so: Primer znaka Opis{filter}tion % Vsak niz z nič ali več znaki. KJER naslov, kot je '%computer%', najde vse naslove knjig z besedo 'computer' kjerkoli v naslovu. _ (podčrtavanje) Kateri koli posamezen znak. KJER au_fname KOT '_ean' najde vsa štiričrkovna imena, ki se končajo z ean (Dean, Sean in tako naprej). [ ] Vsak posamezen znak znotraj določenega območja ([a-f]) ali množice ([abcdef]). KJER au_lname KOT '[C-P]arsen' najde avtorjeva priimka, ki se končajo na arsen in se začnejo z enim samim znakom med C in P, na primer Carsen, Larsen, Karsen in tako naprej. [^] Vsak posamezen znak, ki ni v določenem območju ([^a-f]) ali naboru ([^abcdef]). KJER au_lname KOT 'de[^l]%' vsi avtorjevi priimki, ki se začnejo z de in kjer naslednja črka ni l.
% predstavlja niz ničelne dolžine ali katerekoli dolžine. _ označuje znak. [] označuje znak v določenem razponu. [^] označuje znak, ki ni v določenem območju Na primer kaj:
var q = (iz c v db. Stranke kjer je SqlMethods.Like(c.CustomerID, "A_O_T") Izberite C). ToList(); Preprosto uporabi _ za predstavitev lika. Generirani SQL je:
IZBERI [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [KontaktT itle], [t0]. [Naslov], [t0]. [Mesto], [t0]. [Regija], [t0]. [PostalCode], [t0]. [Svetnik try], [t0]. [Telefon], [t0]. [Faks] IZ [dbo]. [Stranke] AS [t0] KJER [t0]. [CustomerID] KOT @p0 -- @p0: vhodni niz (velikost = 5; Prec = 0; Merilo = 0) [A_O_T]
Za Not Like je tudi zelo preprosto, samo dodaj nesmisel.
var q = (iz c v db. Stranke Kje! SqlMethods.Like(c.CustomerID, "A_O_T") Izberite C). ToList();
SqlMethods.Like ima tudi parameter, imenovan escape character, ki se prevede v stavek, kot je naslednji.
IZBERI stolpce IZ tabele, kjer stolpec KOT '%\%%' ESCAPE '\' Escape je zato, ker polje vsebuje posebne znake, kot so %,_ [ ], ki se uporabljajo kot nadomestni znaki. Tu pride v poštev Pobeg. To je stvar SQL Serverja.
|