Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 20728|Atsakyti: 0

[Šaltinis] Kaip neaiški užklausa Linq į sql

[Kopijuoti nuorodą]
Paskelbta 2015-09-07 23:16:28 | | |
"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.





Ankstesnis:Svetainės našumo optimizavimas: išsamus talpyklos valdymo nustatymų paaiškinimas
Kitą:Ruijie visada buvo pasiryžęs, kas vyksta
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com