"Like" veikimas yra šiek tiek panašus į "in", tačiau kryptis pasikeitė. Ką tai reiškia? Pateikiate eilutę ir ieškote lauko duomenyse, kuriuose yra ši eilutė. Tai reiškia, kad tam tikra eilutė yra lauko poaibis. Sql scrip{filter}t parašyta taip.
Selec * iš lentelės, kur id kaip '%AD%' Selec * iš lentelės, kur id kaip '%AD' Selec * iš lentelės, kur id kaip "AD%" Aukščiau esantis % yra pakaitos simbolis, nurodantis, kad lauke yra reikšmė, o nežinoma pozicija pakeičiama %. Pirmasis yra nurodyti, kad vidurinė dalis yra AD, o abu galai yra neaiškūs. Antrasis yra AD pabaigoje, o ankstesnis neaiškus. Trečiasis, priešingai, prasideda AD ir baigiasi neaiškiai. Atitinkamas Linq teiginys yra:
var q = (iš c db. Klientai kur c.CustomerID.Contains("ROUT") pasirinkite c). ToList(); Jo generuojamas SQL yra
PASIRINKITE [t0]. [Kliento ID], [t0]. [Įmonės pavadinimas], [t0]. [Kontakto vardas], [t0]. [Kontaktai itle], [t0]. [Adresas], [t0]. [Miestas], [t0]. [Regionas], [t0]. [Pašto kodas], [t0]. [Taryba pabandyti], [t0]. [Telefonas], [t0]. [Faksas] IŠ [dbo]. [Klientai] AS [t0] KUR [t0]. [Kliento ID] KAIP @p0 -- @p0: įvesties eilutė (dydis = 6; Prec = 0; Mastelis = 0) [%ROUT%] Baigiasi ISSA, pagrindinis pakaitos simbolis:
var q = (iš c db. Klientai kur c.CustomerID.EndsWith("ISSA") pasirinkite c). ToList(); Jo generuojamas SQL yra
PASIRINKITE [t0]. [Kliento ID], [t0]. [Įmonės pavadinimas], [t0]. [Kontakto vardas], [t0]. [Kontaktai itle], [t0]. [Adresas], [t0]. [Miestas], [t0]. [Regionas], [t0]. [Pašto kodas], [t0]. [Taryba pabandyti], [t0]. [Telefonas], [t0]. [Faksas] IŠ [dbo]. [Klientai] AS [t0] KUR [t0]. [Kliento ID] KAIP @p0 -- @p0: įvesties eilutė (dydis = 5; Prec = 0; Skalė = 0) [%ISSA] Pradedant ARO, uodegos pakaitos simbolis:
var q = (iš c db. Klientai kur c.CustomerID.StartsWith("ARO") pasirinkite c). ToList(); Jo generuojamas SQL yra
PASIRINKITE [t0]. [Kliento ID], [t0]. [Įmonės pavadinimas], [t0]. [Kontakto vardas], [t0]. [Kontaktai itle], [t0]. [Adresas], [t0]. [Miestas], [t0]. [Regionas], [t0]. [Pašto kodas], [t0]. [Taryba pabandyti], [t0]. [Telefonas], [t0]. [Faksas] IŠ [dbo]. [Klientai] AS [t0] KUR [t0]. [Kliento ID] KAIP @p0 -- @p0: įvesties eilutė (dydis = 4; Prec = 0; Skalė = 0) [ARO%]
"Linq" taip pat pateikia metodą, vadinamą SqlMethods.Like, kuriam pirmiausia reikia pridėti System.Data.Linq.SqlClient vardų sritį. Aukščiau išvardytus tris galima parašyti
var q = (iš c db. Klientai kur SqlMethods.Like(c.CustomerID, "%ROUT%") pasirinkite c). ToList(); Čia turite patys užpildyti pakaitos simbolį, kad pasakytumėte Linq, kaip atitikote. Kaip ką
var q = (iš c db. Klientai kur SqlMethods.Like(c.CustomerID, "%ISSA") pasirinkite c). ToList(); Kitas pavyzdys:
var q = (iš c db. Klientai kur SqlMethods.Like(c.CustomerID, "ARO%") pasirinkite c). ToList(); Nuostabiausias dalykas apie SqlMethods.Like yra tai, kad galite įdiegti pakaitos simbolius bet kur su savo apibrėžtomis pakaitos išraiškomis. Kaip ką
var q = (iš c db. Klientai kur SqlMethods.Like(c.CustomerID, "A%O%T") pasirinkite c). ToList(); Jo generuojamas SQL yra
PASIRINKITE [t0]. [Kliento ID], [t0]. [Įmonės pavadinimas], [t0]. [Kontakto vardas], [t0]. [Kontaktai itle], [t0]. [Adresas], [t0]. [Miestas], [t0]. [Regionas], [t0]. [Pašto kodas], [t0]. [Taryba pabandyti], [t0]. [Telefonas], [t0]. [Faksas] IŠ [dbo]. [Klientai] AS [t0] KUR [t0]. [Kliento ID] KAIP @p0 -- @p0: įvesties eilutė (dydis = 5; Prec = 0; Mastelis = 0) [A%O%T]
Standartiškiausias dalykas yra žinoti, kad jis prasideda A ir baigiasi T, žino reikšmę O viduryje ir nieko daugiau nežino. Tiesiog naudokis tuo. SQL serveris apibrėžia keturis pakaitos simbolius, kuriuos visus galima rasti čia. Jie yra: Pakaitos simbolio Descrip{filter}tion pavyzdys % Bet kokia eilutė, sudaryta iš nulio ar daugiau simbolių. KUR pavadinimas LIKE '%kompiuteris%' randa visus knygų pavadinimus su žodžiu 'kompiuteris' bet kurioje knygos pavadinimo vietoje. _ (apatinis brūkšnys) Bet koks atskiras simbolis. KUR au_fname KAIP "_ean" randa visus keturių raidžių vardus, kurie baigiasi ean (Dean, Sean, ir pan.). [ ] Bet koks atskiras simbolis nurodytame diapazone ([a-f]) arba rinkinyje ([abcdef]). KUR au_lname KAIP "[C-P]arsen" randa autorių pavardes, kurios baigiasi arsenu ir prasideda bet kuriuo simboliu tarp C ir P, pvz., Carsen, Larsen, Karsen ir pan. [^] Bet koks atskiras simbolis, nepatenkantis į nurodytą diapazoną ([^a-f]) arba rinkinį ([^abcdef]). KUR au_lname KAIP 'de[^l]%' visų autorių pavardės, prasidedančios de ir kur sekanti raidė nėra l.
% reiškia nulinio ilgio arba bet kokio ilgio eilutę. _ nurodo simbolį. [] nurodo diapazono diapazono simbolį. [^] nurodo simbolį, kuris nėra tam tikrame diapazone Pavyzdžiui, kas:
var q = (iš c db. Klientai kur SqlMethods.Like(c.CustomerID, "A_O_T") pasirinkite c). ToList(); Tiesiog naudokite _ simboliui pavaizduoti. Sugeneruotas SQL yra:
PASIRINKITE [t0]. [Kliento ID], [t0]. [Įmonės pavadinimas], [t0]. [Kontakto vardas], [t0]. [Kontaktai itle], [t0]. [Adresas], [t0]. [Miestas], [t0]. [Regionas], [t0]. [Pašto kodas], [t0]. [Taryba pabandyti], [t0]. [Telefonas], [t0]. [Faksas] IŠ [dbo]. [Klientai] AS [t0] KUR [t0]. [Kliento ID] KAIP @p0 -- @p0: įvesties eilutė (dydis = 5; Prec = 0; Skalė = 0) [A_O_T]
Dėl "Not Like" tai taip pat labai paprasta, tiesiog pridėkite nesąmonę.
var q = (iš c db. Klientai kur ! SqlMethods.Like(c.CustomerID, "A_O_T") pasirinkite c). ToList();
SqlMethods.Like taip pat turi parametrą, vadinamą pabėgimo simboliu, kuris bus išverstas į tokį teiginį.
SELECT stulpeliai IŠ lentelės KUR stulpelis LIKE '%\%%' ESCAPE '\' Pabėgimas yra todėl, kad lauke yra specialiųjų simbolių, pvz., %,_ [ ], kurie naudojami kaip pakaitos simboliai. Štai kur Escape ateina. Tai SQL serverio dalykas.
|