Like'i toimimine on natuke sarnane, aga suund on muutunud. Mida see tähendab? Sa annad stringi ja otsid andmetest välja, mis seda stringi sisaldab. See tähendab, et antud string on välja alamhulk. SQL scrip{filter}t on kirjutatud nii.
Selec * tabelist, kus id meeldib '%AD%' Selec * tabelist, kus id meeldib '%AD' Selec * tabelist, kus id meeldib 'AD%' Ülalolev protsent on jokker, mis näitab, et väljal on väärtus ning tundmatu positsioon on asendatud protsendiga. Esiteks näitab, et keskmine osa on AD ja kaks otsa on ebaselged. Teine on AD lõpus ja eelmine on ebaselge. Kolmas seevastu algab AD-ga ja lõpeb ebaselgelt. Vastav Linqi väide on:
VAR q = (alates C-st db-s. Kliendid kus c.CustomerID.Contains("ROUT") vali c). ToList(); SQL, mida see genereerib, on
VALI [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [KontaktNimi], [t0]. [KontaktT itle], [t0]. [Aadress], [t0]. [Linn], [t0]. [Piirkond], [t0]. [Postiindeks], [t0]. [Nõunik try], [t0]. [Telefon], [t0]. [Faks] FROM [dbo]. [Kliendid] AS [t0] KUS [t0]. [CustomerID] NAGU @p0 -- @p0: sisendstring (suurus = 6; Prec = 0; Skaala = 0) [%ROUT%] Lõpp ISSA-ga, pea wild card:
VAR q = (alates C-st db-s. Kliendid kus c.CustomerID.EndsWith("ISSA") vali c). ToList(); SQL, mida see genereerib, on
VALI [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [KontaktNimi], [t0]. [KontaktT itle], [t0]. [Aadress], [t0]. [Linn], [t0]. [Piirkond], [t0]. [Postiindeks], [t0]. [Nõunik try], [t0]. [Telefon], [t0]. [Faks] FROM [dbo]. [Kliendid] AS [t0] KUS [t0]. [CustomerID] NAGU @p0 -- @p0: sisendstring (suurus = 5; Prec = 0; Skaala = 0) [%ISSA] Alustades ARO-st, saba wild card:
VAR q = (alates C-st db-s. Kliendid kus c.CustomerID.StartsWith("ARO") vali c). ToList(); SQL, mida see genereerib, on
VALI [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [KontaktNimi], [t0]. [KontaktT itle], [t0]. [Aadress], [t0]. [Linn], [t0]. [Piirkond], [t0]. [Postiindeks], [t0]. [Nõunik try], [t0]. [Telefon], [t0]. [Faks] FROM [dbo]. [Kliendid] AS [t0] KUS [t0]. [CustomerID] NAGU @p0 -- @p0: sisendstring (suurus = 4; Prec = 0; Skaala = 0) [ARO%]
Linq pakub ka meetodit nimega SqlMethods.Like, mis nõuab esmalt System.Data.Linq.SqlClient nimeruumi lisamist. Ülaltoodud kolm saab kirjutada
VAR q = (alates C-st db-s. Kliendid kus SqlMethods.Like(c.CustomerID, "%ROUT%") vali c). ToList(); Siin pead ise jokkeri täitma, et Linq'le öelda, kuidas sobitasid. Nagu mis
VAR q = (alates C-st db-s. Kliendid kus SqlMethods.Like(c.CustomerID, "%ISSA") vali c). ToList(); Teine näide:
VAR q = (alates C-st db-s. Kliendid kus SqlMethods.Like(c.CustomerID, "ARO%") vali c). ToList(); Kõige hämmastavam asi SqlMethods.Like'i juures on see, et saad teha wildcard'e ükskõik kus oma määratletud wildcard'i avaldistega. Nagu mis
VAR q = (alates C-st db-s. Kliendid kus SqlMethods.Like(c.CustomerID, "A%O%T") vali c). ToList(); SQL, mida see genereerib, on
VALI [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [KontaktNimi], [t0]. [KontaktT itle], [t0]. [Aadress], [t0]. [Linn], [t0]. [Piirkond], [t0]. [Postiindeks], [t0]. [Nõunik try], [t0]. [Telefon], [t0]. [Faks] FROM [dbo]. [Kliendid] AS [t0] KUS [t0]. [CustomerID] NAGU @p0 -- @p0: sisendstring (suurus = 5; Prec = 0; Skaala = 0) [A%O%T]
Kõige tavalisem on teada, et see algab A-ga ja lõpeb T-ga, teab väärtust O keskel ja ei tea midagi muud. Kasuta lihtsalt seda. SQL Server määratleb neli jokkerit, mis kõik on siin saadaval. Need on: Wildcard märk Descrip{filter}tion Näide % Mis tahes nullist või enamast tähemärgist koosnev jada. KUS pealkiri NAGU '%computer%' leiab kõik raamatute pealkirjad, kus raamatu pealkirjas on sõna 'computer'. _ (alajoon) Ükskõik milline üksainus tähemärk. KUS au_fname NAGU '_ean' leiab kõik neljatähelised eesnimed, mis lõpevad eaniga (Dean, Sean jne). [ ] Üksainus märk määratud vahemikus ([a-f]) või hulgas ([abcdef]). KUS au_lname NAGU '[C-P]arsen' leiab autori perekonnanimed, mis lõpevad arseniga ja algavad ükskõik millise tähemärgiga C ja P vahel, näiteks Carsen, Larsen, Karsen jne. [^] Iga üksik märk, mis ei kuulu määratud vahemikku ([^a-f]) või hulgasse ([^abcdef]). KUS au_lname NAGU 'de[^l]%' kõik autorite perekonnanimed, mis algavad de-ga ja kus järgmine täht ei ole l.
% tähistab nullpikkusega või suvalise pikkusega stringi. _ tähistab märki. [] tähistab märki vahemikus. [^] tähistab märki, mis ei kuulu teatud vahemikku Nagu mida:
VAR q = (alates C-st db-s. Kliendid kus SqlMethods.Like(c.CustomerID, "A_O_T") vali c). ToList(); Kasuta lihtsalt _ tegelase esindamiseks. Genereeritud SQL on:
VALI [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [KontaktNimi], [t0]. [KontaktT itle], [t0]. [Aadress], [t0]. [Linn], [t0]. [Piirkond], [t0]. [Postiindeks], [t0]. [Nõunik try], [t0]. [Telefon], [t0]. [Faks] FROM [dbo]. [Kliendid] AS [t0] KUS [t0]. [CustomerID] NAGU @p0 -- @p0: sisendstring (suurus = 5; Prec = 0; Skaala = 0) [A_O_T]
Not Like puhul on see samuti väga lihtne, lihtsalt lisa mingi mõttetus.
VAR q = (alates C-st db-s. Kliendid kus! SqlMethods.Like(c.CustomerID, "A_O_T") vali c). ToList();
SqlMethods.Like'il on ka parameeter nimega escape character, mis tõlgitakse järgmiseks avalduseks.
VALI veerud tabelist KUS veerg LIKE '%\%%' ESCAPE '\' Põgenemine tuleneb sellest, et väljas on erimärke, nagu %,_ [ ], mida kasutatakse jokkeridena. Siin tulebki mängu Escape. See on SQL Serveri asi.
|