Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 20728|Odpověď: 0

[Zdroj] Jako fuzzy dotaz v Linq do SQL

[Kopírovat odkaz]
Zveřejněno 07.09.2015 23:16:28 | | |
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.





Předchozí:Optimalizace výkonu webových stránek: Podrobné vysvětlení nastavení řízení cache
Další:Ruijie byl vždy odhodlaný v tom, co se děje
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com