Работата на Подобно е малко подобна, но посоката се е променила. Какво означава това? Даваш низ и търсиш поле в данните, което съдържа този низ. Тоест, даден низ е подмножество на поле. SQL scrip{filter}t се пише по следния начин.
Selec * от таблицата, където бих искал '%AD%' Selec * от таблицата, където бих искал '%AD' Selec * от таблицата, където бих искал 'AD%' Горният процент е жокер, който показва, че полето съдържа стойност, а неизвестната позиция се заменя с %. Първият е да се посочи, че средната част е AD и двата края са неясни. Вторият е AD в края, а предишният е неясен. Третата, напротив, започва с AD и завършва неясно. Съответното твърдение на Линк е:
var q = (от c в db. Клиенти където c.CustomerID.Contains ("ROUT") изберете c). ToList(); SQL, който генерира, е
ИЗБЕРЕТЕ [t0]. [CustomerID], [t0]. [Име на компания], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Адрес], [t0]. [Град], [t0]. [регион], [t0]. [Пощенски код], [t0]. [Съветник опитай], [t0]. [Телефон], [t0]. [Факс] ОТ [dbo]. [Клиенти] AS [t0] КЪДЕТО [t0]. [CustomerID] КАТО @p0 -- @p0: входен низ (размер = 6; Prec = 0; Скала = 0) [%РАЗБОЙ%] Завършвайки с ISSA, главен уайлдкард:
var q = (от c в db. Клиенти където c.CustomerID.EndsWith("ISSA") изберете c). ToList(); SQL, който генерира, е
ИЗБЕРЕТЕ [t0]. [CustomerID], [t0]. [Име на компания], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Адрес], [t0]. [Град], [t0]. [регион], [t0]. [Пощенски код], [t0]. [Съветник опитай], [t0]. [Телефон], [t0]. [Факс] ОТ [dbo]. [Клиенти] AS [t0] КЪДЕТО [t0]. [CustomerID] КАТО @p0 -- @p0: входен низ (размер = 5; Prec = 0; Мащаб = 0) [%ISSA] Започвайки с ARO, опашката на уайлдкард:
var q = (от c в db. Клиенти където c.CustomerID.StartsWith("ARO") изберете c). ToList(); SQL, който генерира, е
ИЗБЕРЕТЕ [t0]. [CustomerID], [t0]. [Име на компания], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Адрес], [t0]. [Град], [t0]. [регион], [t0]. [Пощенски код], [t0]. [Съветник опитай], [t0]. [Телефон], [t0]. [Факс] ОТ [dbo]. [Клиенти] AS [t0] КЪДЕТО [t0]. [CustomerID] КАТО @p0 -- @p0: входен низ (размер = 4; Prec = 0; Мащаб = 0) [ARO%]
Linq предоставя и метод, наречен SqlMethods.Like, който изисква първо да се добави пространството от имена System.Data.Linq.SqlClient. Горните три могат да бъдат написани
var q = (от c в db. Клиенти където SqlMethods.Like(c.CustomerID, "%ROUT%") изберете c). ToList(); Тук трябва сам да попълниш уайлдкарда, за да кажеш на Линк как сте се съвпаднали. Като какво
var q = (от c в db. Клиенти където SqlMethods.Like(c.CustomerID, "%ISSA") изберете c). ToList(); Друг пример:
var q = (от c в db. Клиенти където SqlMethods.Like(c.CustomerID, "ARO%") изберете c). ToList(); Най-удивителното при SqlMethods.Like е, че можеш да реализираш уайлдкарти навсякъде с твоите собствени дефинирани wildcard изрази. Като какво
var q = (от c в db. Клиенти където SqlMethods.Like(c.CustomerID, "A%O%T") изберете c). ToList(); SQL, който генерира, е
ИЗБЕРЕТЕ [t0]. [CustomerID], [t0]. [Име на компания], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Адрес], [t0]. [Град], [t0]. [регион], [t0]. [Пощенски код], [t0]. [Съветник опитай], [t0]. [Телефон], [t0]. [Факс] ОТ [dbo]. [Клиенти] AS [t0] КЪДЕТО [t0]. [CustomerID] КАТО @p0 -- @p0: входен низ (размер = 5; Prec = 0; Скала = 0) [A%O%T]
Най-стандартното е да знаеш, че започва с A и завършва с T, знае стойност O в средата и не знае нищо друго. Просто използвай това. SQL Server дефинира четири жокера, всички от които са достъпни тук. Те са: Пример за описание на символа с уайлдкард {filter}tion % Всеки низ от нула или повече символи. КЪДЕТО заглавие като '%computer%' намира всички заглавия на книги с думата 'computer' навсякъде в заглавието на книгата. _ (подчертаване) Всеки един знак. КЪДЕТО au_fname КАТО "_ean" намира всички четирибуквени имена, които завършват на ean (Дийн, Шон и т.н.). [ ] Всеки отделен символ в определения диапазон ([a-f]) или множество ([abcdef]). КЪДЕТО au_lname КАТО '[C-P]arsen' намира фамилните имена на авторите, завършващи на arsen и започващи с всеки отделен знак между C и P, например Carsen, Larsen, Karsen и така нататък. [^] Всеки отделен символ, който не е в определения диапазон ([^a-f]) или множеството ([^abcdef]). КЪДЕТО au_lname КАТО 'de[^l]%' всички авторски фамилни имена, започващи с de, и където следващата буква не е l.
% представлява низ с нулева дължина или каквато и да е дължина. _ означава знак. [] означава символ в диапазон. [^] означава знак, който не е в определен диапазон Като какво:
var q = (от c в db. Клиенти където SqlMethods.Like(c.CustomerID, "A_O_T") изберете c). ToList(); Просто използвай _, за да представиш персонаж. Генерираният SQL е:
ИЗБЕРЕТЕ [t0]. [CustomerID], [t0]. [Име на компания], [t0]. [ContactName], [t0]. [ContactT itle], [t0]. [Адрес], [t0]. [Град], [t0]. [регион], [t0]. [Пощенски код], [t0]. [Съветник опитай], [t0]. [Телефон], [t0]. [Факс] ОТ [dbo]. [Клиенти] AS [t0] КЪДЕТО [t0]. [CustomerID] КАТО @p0 -- @p0: входен низ (размер = 5; Prec = 0; Мащаб = 0) [A_O_T]
За Not Like също е много просто, просто добави някакви глупости.
var q = (от c в db. Клиенти къде! SqlMethods.Like(c.CustomerID, "A_O_T") изберете c). ToList();
SqlMethods.Like има и параметър, наречен escape character, който се превежда в оператор като следния.
ИЗБЕРЕТЕ колони ОТ таблица КЪДЕТО колона КАТО '%\%%' ESCAPE '\' escape е защото поле съдържа специални знаци, като %,_ [ ], които се използват като жокери. Тук идва Escape. Това е нещо свързано със SQL Server.
|