Fungovanie Like je trochu ako in, ale smer sa zmenil. Čo to znamená? Zadáte reťazec a hľadáte pole v dátach, ktoré tento reťazec obsahuje. To znamená, že daný reťazec je podmnožinou poľa. SQL scrip{filter}t je napísaný takto.
Selec * z tabuľky, kde by som chcel '%AD%' Selec * z tabuľky, kde by som chcel '%AD' Selec * z tabuľky, kde by som chcel 'AD%' Vyššie uvedené % je žolík, čo znamená, že pole obsahuje hodnotu, a neznáma pozícia je nahradená % Prvým je naznačenie, že stredná časť je AD a oba konce sú nejasné. Druhá je AD na konci a tá predchádzajúca nie je jasná. Tretia, naopak, začína na AD a končí nejasne. Zodpovedajúce Linqovo tvrdenie je:
var q = (z c v db. Zákazníci kde c.CustomerID.Contains ("ROUT") Vyberte c). ToList(); SQL, ktoré generuje, je
VYBRAŤ [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Adresa], [t0]. [City], [t0]. [Región], [t0]. [PostalCode], [t0]. [Radca try], [t0]. [Telefón], [t0]. [Fax] FROM [dbo]. [Zákazníci] AS [t0] KDE [t0]. [CustomerID] AKO @p0 -- @p0: Vstupný reťazec (veľkosť = 6; Prec = 0; Škála = 0) [%ROUT%] Na záver s ISSA, hlavná divoká karta:
var q = (z c v db. Zákazníci kde c.CustomerID.EndsWith("ISSA") Vyberte c). ToList(); SQL, ktoré generuje, je
VYBRAŤ [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Adresa], [t0]. [City], [t0]. [Región], [t0]. [PostalCode], [t0]. [Radca try], [t0]. [Telefón], [t0]. [Fax] FROM [dbo]. [Zákazníci] AS [t0] KDE [t0]. [CustomerID] AKO @p0 -- @p0: Vstupný reťazec (veľkosť = 5; Prec = 0; Mierka = 0) [%ISSA] Začíname ARO, tail wildcard:
var q = (z c v db. Zákazníci kde c.CustomerID.StartsWith("ARO") Vyberte c). ToList(); SQL, ktoré generuje, je
VYBRAŤ [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Adresa], [t0]. [City], [t0]. [Región], [t0]. [PostalCode], [t0]. [Radca try], [t0]. [Telefón], [t0]. [Fax] FROM [dbo]. [Zákazníci] AS [t0] KDE [t0]. [CustomerID] AKO @p0 -- @p0: Vstupný reťazec (veľkosť = 4; Prec = 0; Škála = 0) [ARO%]
Linq tiež poskytuje metódu nazvanú SqlMethods.Like, ktorá vyžaduje najskôr pridanie menného priestoru System.Data.Linq.SqlClient. Vyššie uvedené tri sa dajú zapísať
var q = (z c v db. Zákazníci kde SqlMethods.Like(c.CustomerID, "%ROUT%") Vyberte c). ToList(); Tu musíte sami vyplniť divokú kartu, aby ste Linqovi povedali, ako ste sa zhodili. Ako čo
var q = (z c v db. Zákazníci kde SqlMethods.Like(c.CustomerID, "%ISSA") Vyberte c). ToList(); Ďalší príklad:
var q = (z c v db. Zákazníci kde SqlMethods.Like(c.CustomerID, "ARO%") Vyberte c). ToList(); Najúžasnejšie na SqlMethods.Like je, že môžete implementovať wildcardy kdekoľvek s vlastnými definovanými wildcard výrazmi. Ako čo
var q = (z c v db. Zákazníci kde SqlMethods.Like(c.CustomerID, "A%O%T") Vyberte c). ToList(); SQL, ktoré generuje, je
VYBRAŤ [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Adresa], [t0]. [City], [t0]. [Región], [t0]. [PostalCode], [t0]. [Radca try], [t0]. [Telefón], [t0]. [Fax] FROM [dbo]. [Zákazníci] AS [t0] KDE [t0]. [CustomerID] AKO @p0 -- @p0: Vstupný reťazec (veľkosť = 5; Prec = 0; Škála = 0) [A%O%T]
Najbežnejšie je vedieť, že začína na A a končí na T, pozná hodnotu O v strede a nepozná nič iné. Použi toto. SQL Server definuje štyri divoké karty, ktoré sú všetky dostupné tu. Sú to: Príklad žolíkového znaku Descrip{filter}tion % Akýkoľvek reťazec nula alebo viac znakov. KDE názov AKO '%computer%' nájde všetky názvy kníh so slovom 'computer' kdekoľvek v názve. _ (podčiarknuté) Akýkoľvek jediný znak. KDE au_fname AKO '_ean' nájde všetky štvorpísmenové krstné mená končiace na ean (Dean, Sean a tak ďalej). [ ] Akýkoľvek jednotlivý znak v rámci špecifikovaného rozsahu ([a-f]) alebo množiny ([abcdef]). KDE au_lname AKO '[C-P]arsen' nájde priezviská autora končiace na arsen a začínajúce na akýkoľvek znak medzi C a P, napríklad Carsen, Larsen, Karsen a podobne. [^] Každý jednotlivý znak, ktorý nespadá do špecifikovaného rozsahu ([^a-f]) alebo množiny ([^abcdef]). KDE au_lname AKO 'de[^l]%' všetky priezviská autora začínajúce na de a kde nasledujúce písmeno nie je l.
% predstavuje reťazec nulovej dĺžky alebo akejkoľvek dĺžky. _ označuje postavu. [] označuje znak v určitom rozsahu. [^] označuje znak, ktorý nie je v určitom rozsahu Napríklad čo:
var q = (z c v db. Zákazníci kde SqlMethods.Like(c.CustomerID, "A_O_T") Vyberte c). ToList(); Stačí použiť _ na reprezentáciu postavy. Generovaný SQL je:
VYBRAŤ [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Adresa], [t0]. [City], [t0]. [Región], [t0]. [PostalCode], [t0]. [Radca try], [t0]. [Telefón], [t0]. [Fax] FROM [dbo]. [Zákazníci] AS [t0] KDE [t0]. [CustomerID] AKO @p0 -- @p0: Vstupný reťazec (veľkosť = 5; Prec = 0; Mierka = 0) [A_O_T]
Pre Not Like je to tiež veľmi jednoduché, stačí pridať nejaký nezmysel.
var q = (z c v db. Zákazníci Kde! SqlMethods.Like(c.CustomerID, "A_O_T") Vyberte c). ToList();
SqlMethods.Like má tiež parameter nazývaný escape character, ktorý sa preloží do príkazu ako nasledujúci.
VYBERTE stĺpce Z tabuľky, kde stĺpec AKO '%\%%' ESCAPE '\' escape je preto, že pole obsahuje špeciálne znaky, ako %,_ [ ], ktoré sa používajú ako žolíky. A práve tu prichádza na scénu Escape. Toto je záležitosť SQL Serveru.
|