Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 20728|Odgovoriti: 0

[Vir] Kot nejasna poizvedba v Linqu v SQL

[Kopiraj povezavo]
Objavljeno na 7. 09. 2015 23:16:28 | | |
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.





Prejšnji:Optimizacija zmogljivosti spletne strani: Podrobna razlaga nastavitev nadzora predpomnilnika
Naslednji:Ruijie je bil vedno odločen, kaj se dogaja
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com