Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 20728|Odpoveď: 0

[Zdroj] Ako fuzzy query v Linq do SQL

[Kopírovať odkaz]
Zverejnené 7. 9. 2015 23:16:28 | | |
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.





Predchádzajúci:Optimalizácia výkonu webovej stránky: Podrobné vysvetlenie nastavení riadenia cache
Budúci:Ruijie bol vždy rozhodnutý v tom, čo sa deje
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com