Funkce Like je trochu jako in, ale směr se změnil. Co to znamená? Zadáte řetězec a hledáte pole v datech, které tento řetězec obsahuje. To znamená, že daný řetězec je podmnožinou tělesa. SQL scrip{filter}t je napsán takto.
Selec * z tabulky, kde bych chtěl '%AD%' Selec * ze stolu, kde bych chtěl '%AD' Selec * ze stolu, kde bych chtěl 'AD%' Výše uvedené % je žolík, což znamená, že pole obsahuje hodnotu, a neznámá pozice je nahrazena % Prvním je naznačení, že střední část je AD a oba konce jsou nejasné. Druhá je AD na konci a ta předchozí není jasná. Třetí naopak začíná AD a končí nejasně. Odpovídající Linqovo tvrzení je:
var q = (z c v db. Zákazníci kde c.CustomerID.Contains("ROUT") Vyberte c). ToList(); SQL, které generuje, je
VYBERTE [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Adresa], [t0]. [City], [t0]. [Region], [t0]. [PostalCode], [t0]. [Radný try], [t0]. [Telefon], [t0]. [Fax] FROM [dbo]. [Zákazníci] AS [t0] KDE [t0]. [CustomerID] JAKO @p0 -- @p0: Vstupní řetězec (velikost = 6; Prec = 0; Měřítko = 0) [%ROUT%] Na závěr ISSA, hlavní divoká karta:
var q = (z c v db. Zákazníci kde c.CustomerID.EndsWith("ISSA") Vyberte c). ToList(); SQL, které generuje, je
VYBERTE [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Adresa], [t0]. [City], [t0]. [Region], [t0]. [PostalCode], [t0]. [Radný try], [t0]. [Telefon], [t0]. [Fax] FROM [dbo]. [Zákazníci] AS [t0] KDE [t0]. [CustomerID] JAKO @p0 -- @p0: Vstupní řetězec (velikost = 5; Prec = 0; Měřítko = 0) [%ISSA] Začněme ARO, tail wildcard:
var q = (z c v db. Zákazníci kde c.CustomerID.StartsWith("ARO") Vyberte c). ToList(); SQL, které generuje, je
VYBERTE [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Adresa], [t0]. [City], [t0]. [Region], [t0]. [PostalCode], [t0]. [Radný try], [t0]. [Telefon], [t0]. [Fax] FROM [dbo]. [Zákazníci] AS [t0] KDE [t0]. [CustomerID] JAKO @p0 -- @p0: Vstupní řetězec (velikost = 4; Prec = 0; Škála = 0) [ARO%]
Linq také poskytuje metodu nazvanou SqlMethods.Like, která vyžaduje nejprve přidání jmenného prostoru System.Data.Linq.SqlClient. Výše uvedené tři lze zapsat
var q = (z c v db. Zákazníci kde SqlMethods.Like(c.CustomerID, "%ROUT%") Vyberte c). ToList(); Tady musíte sami vyplnit divokou kartu, abyste Linqovi řekli, jak jste se shodili. Jako co
var q = (z c v db. Zákazníci kde SqlMethods.Like(c.CustomerID, "%ISSA") Vyberte c). ToList(); Další příklad:
var q = (z c v db. Zákazníci kde SqlMethods.Like(c.CustomerID, "ARO%") Vyberte c). ToList(); Nejúžasnější na SqlMethods.Like je, že můžete implementovat divoké karty kdekoliv s vlastními definovanými výrazy divokých karet. Jako co
var q = (z c v db. Zákazníci kde SqlMethods.Like(c.CustomerID, "A%O%T") Vyberte c). ToList(); SQL, které generuje, je
VYBERTE [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Adresa], [t0]. [City], [t0]. [Region], [t0]. [PostalCode], [t0]. [Radný try], [t0]. [Telefon], [t0]. [Fax] FROM [dbo]. [Zákazníci] AS [t0] KDE [t0]. [CustomerID] JAKO @p0 -- @p0: Vstupní řetězec (velikost = 5; Prec = 0; Škála = 0) [A%O%T]
Nejběžnější je vědět, že začíná na A a končí na T, zná hodnotu O uprostřed a nezná nic jiného. Prostě použij tohle. SQL Server definuje čtyři divoké karty, které jsou všechny dostupné zde. Jsou to: Příklad znaku Descrip{filter}tion % Jakýkoli řetězec s nulou nebo více znaky. KDE název JAKO '%computer%' najde všechny názvy knih se slovem 'computer' kdekoli v názvu knihy. _ (podtrhnutí) Jakýkoli jediný znak. KDE au_fname JAKO '_ean' obsahuje všechna čtyřpísmenná křestní jména končící na ean (Dean, Sean a tak dále). [ ] Jakýkoli jednotlivý znak v rámci specifikovaného rozsahu ([a-f]) nebo množiny ([abcdef]). KDE au_lname JAKO '[C-P]arsen' nachází příjmení autora končící na arsen a začínající na libovolný znak mezi C a P, například Carsen, Larsen, Karsen a tak dále. [^] Jakýkoli jednotlivý znak, který není ve specifikovaném rozsahu ([^a-f]) nebo sadě ([^abcdef]). KDE au_lname JAKO 'de[^l]%' všechna příjmení autora začínající na de a kde následující písmeno není l.
% představuje řetězec nulové délky nebo libovolné délky. _ označuje postavu. [] označuje znak v určitém rozsahu. [^] označuje znak, který není v určitém rozsahu Jako co:
var q = (z c v db. Zákazníci kde SqlMethods.Like(c.CustomerID, "A_O_T") Vyberte c). ToList(); Stačí použít _ k reprezentaci postavy. Generovaný SQL je:
VYBERTE [t0]. [CustomerID], [t0]. [CompanyName], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Adresa], [t0]. [City], [t0]. [Region], [t0]. [PostalCode], [t0]. [Radný try], [t0]. [Telefon], [t0]. [Fax] FROM [dbo]. [Zákazníci] AS [t0] KDE [t0]. [CustomerID] JAKO @p0 -- @p0: Vstupní řetězec (velikost = 5; Prec = 0; Měřítko = 0) [A_O_T]
U Not Like je to také velmi jednoduché, stačí přidat nesmysl.
var q = (z c v db. Zákazníci Kde! SqlMethods.Like(c.CustomerID, "A_O_T") Vyberte c). ToList();
SqlMethods.Like má také parametr zvaný escape character, který se přeloží do příkazu následujícího.
VYBERTE sloupce Z tabulky, kde sloupec JAKO '%\%%' ESCAPE '\' Escape je proto, že pole obsahuje speciální znaky, jako %,_ [ ], které se používají jako žolíky. A právě tady přichází na řadu Útěk. Tohle je záležitost SQL Serveru.
|