A Like működése kicsit olyan, mint az in, de az irány megváltozott. Mit jelent ez? Adsz egy stringet, és keresel egy mezőt az adatban, amely tartalmazza ezt a stringet. Vagyis egy adott string egy mező részhalmaza. A sql scrip{filter}t így van írva.
Selec * a táblázatból, ahol id '%AD%' Selec * a táblázatból, ahol id '%AD' tetszik Selec * a táblából, ahol az id 'AD%' tetszik A fenti % egy vadkártya, ami azt jelzi, hogy a mező tartalmaz egy értéket, és az ismeretlen pozíciót helyettesítik %. Az első, hogy jelezzük, hogy a középső szakasz AD, és a két vége nem egyértelmű. A második a végén AD, az előző pedig nem egyértelmű. A harmadik viszont ezzel szemben AD-vel kezdődik és nem érthetően ér véget. A megfelelő Linq állítás a következő:
Var q = (a c-től a db-ben. Ügyfelek ahol c.CustomerID.Contains("ROUT") válassz c-t). ToList(); Az általa generált SQL a következőképpen
VÁLASZD [t0]-ot. [CustomerID], [t0]. [Cégnév], [t0]. [ContactName], [t0]. [KontaktT itle], [t0]. [Cím], [t0]. [City], [t0]. [Régió], [t0]. [Irányítószám], [t0]. [Tanácsos try], [t0]. [Telefon], [t0]. [Fax] FROM [dbo]. [Ügyfelek] AS [t0] AHOL [t0]. [CustomerID] MINT @p0 -- @p0: bemeneti lánc (méret = 6; Prec = 0; Skála = 0) [%ROUT%] Befejezés ISSA-val, vezető wildcard:
Var q = (a c-től a db-ben. Ügyfelek ahol c.CustomerID.EndsWith("ISSA") válassz c-t). ToList(); Az általa generált SQL a következőképpen
VÁLASZD [t0]-ot. [CustomerID], [t0]. [Cégnév], [t0]. [ContactName], [t0]. [KontaktT itle], [t0]. [Cím], [t0]. [City], [t0]. [Régió], [t0]. [Irányítószám], [t0]. [Tanácsos try], [t0]. [Telefon], [t0]. [Fax] FROM [dbo]. [Ügyfelek] AS [t0] AHOL [t0]. [CustomerID] MINT @p0 -- @p0: bemeneti lánc (méret = 5; Prec = 0; Skála = 0) [%ISSA] Kezdve az ARO-val, a tail wildcard:
Var q = (a c-től a db-ben. Ügyfelek ahol c.CustomerID.BeginsWith("ARO") válassz c-t). ToList(); Az általa generált SQL a következőképpen
VÁLASZD [t0]-ot. [CustomerID], [t0]. [Cégnév], [t0]. [ContactName], [t0]. [KontaktT itle], [t0]. [Cím], [t0]. [City], [t0]. [Régió], [t0]. [Irányítószám], [t0]. [Tanácsos try], [t0]. [Telefon], [t0]. [Fax] FROM [dbo]. [Ügyfelek] AS [t0] AHOL [t0]. [CustomerID] MINT @p0 -- @p0: bemeneti lánc (méret = 4; Prec = 0; Méretarány = 0) [ARO%]
A Linq egy SqlMethods.Like nevű metódust is biztosít, amelyhez először a System.Data.Linq.SqlClient névteret kell hozzáadni. A fenti három leírható
Var q = (a c-től a db-ben. Ügyfelek ahol SqlMethods.Like(c.CustomerID, "%ROUT%") válassz c-t). ToList(); Itt magadnak kell kitöltened a vakerot, hogy elmondd Linqnak, hogyan illeszkedtél hozzá. Mint mit
Var q = (a c-től a db-ben. Ügyfelek ahol SqlMethods.Like(c.CustomerID, "%ISSA") válassz c-t). ToList(); Egy másik példa:
Var q = (a c-től a db-ben. Ügyfelek ahol SqlMethods.Like(c.CustomerID, "ARO%") válassz c-t). ToList(); A legcsodálatosabb a SqlMethods.Like-ban, hogy bárhol megvalósíthatod a wildcard-okat, saját meghatározott wildcard kifejezéseiddel. Mint mit
Var q = (a c-től a db-ben. Ügyfelek ahol SqlMethods.Like(c.CustomerID, "A%O%T") válassz c-t). ToList(); Az általa generált SQL a következőképpen
VÁLASZD [t0]-ot. [CustomerID], [t0]. [Cégnév], [t0]. [ContactName], [t0]. [KontaktT itle], [t0]. [Cím], [t0]. [City], [t0]. [Régió], [t0]. [Irányítószám], [t0]. [Tanácsos try], [t0]. [Telefon], [t0]. [Fax] FROM [dbo]. [Ügyfelek] AS [t0] AHOL [t0]. [CustomerID] MINT @p0 -- @p0: bemeneti lánc (méret = 5; Prec = 0; Skála = 0) [A%O%T]
A legszokványosabb dolog, hogy tudjuk, hogy A-val kezdődik és T-vel végződik, a középen van egy O érték, és semmi mást nem tud. Csak használd ezt. Az SQL Server négy vadkártyát határoz meg, amelyek mind elérhetők itt. Ezek a következők: Wildcard character Descrip{filter}tion Example % Bármilyen nulla vagy több karakterből álló sorozat. WHERE a cím, MINT a '%computer%', minden olyan könyvcímet talál, ahol a 'computer' szó bárhol a könyv címében található. _ (aláhúzás) Bármelyik karakter. WHERE au_fname LIKE a '_ean' tartalmazza az összes négybetűs keresztnevet, amelyek ean-nal végződnek (Dean, Sean és így tovább). [ ] Bármely egyedi karakter a megadott tartományban ([a-f]) vagy halmazban ([abcdef]). AHOL au_lname LIKE a '[C-P]arsen' szerző vezetéknevei arsennel végződnek, és bármely egyes karakterrel kezdődnek C és P között, például Carsen, Larsen, Karsen és így tovább. [^] Bármely egyedi karakter, amely nem a megadott tartományban ([^a-f]) vagy halmazban ([^abcdef]). AHOL au_lname MINT 'de[^l]%', minden szerző vezetéknev de betűvel kezdődik, és ahol a következő betű nem l.
% egy nulla hosszúságú vagy bármilyen hosszúságú húrt jelöl. _ egy karaktert jelöl. [] egy karaktert jelöl egy tartományban. [^] olyan karaktert jelöl, amely nem egy bizonyos tartományban van Például:
Var q = (a c-től a db-ben. Ügyfelek ahol SqlMethods.Like(c.CustomerID, "A_O_T") válassz c-t). ToList(); Csak használd _ betűt egy karakter ábrázolására. A generált SQL a következő:
VÁLASZD [t0]-ot. [CustomerID], [t0]. [Cégnév], [t0]. [ContactName], [t0]. [KontaktT itle], [t0]. [Cím], [t0]. [City], [t0]. [Régió], [t0]. [Irányítószám], [t0]. [Tanácsos try], [t0]. [Telefon], [t0]. [Fax] FROM [dbo]. [Ügyfelek] AS [t0] AHOL [t0]. [CustomerID] MINT @p0 -- @p0: bemeneti lánc (méret = 5; Prec = 0; Skála = 0) [A_O_T]
A Not Like esetében is nagyon egyszerű, csak tegyél hozzá valami hülyeséget.
Var q = (a c-től a db-ben. Ügyfelek hol! SqlMethods.Like(c.CustomerID, "A_O_T") válassz c-t). ToList();
A SqlMethods.Like tartalmaz egy escape karakter nevű paramétert is, amelyet az alábbihoz hasonlóan lefordítanak kijelentésre.
VÁLASSZ oszlopokat a táblázatból AHOL oszlop LIKE '%\%%' ESCAPE '\' Az escape azért van, mert egy mező speciális karaktereket tartalmaz, például %,_ [ ], amelyeket vadkártyáként használnak. Itt jön képbe az Escape. Ez egy SQL Server dolog.
|