Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 20728|Svar: 0

[Källa] Som fuzzy query i Linq till SQL

[Kopiera länk]
Publicerad på 2015-09-07 23:16:28 | | |
Effekten av Like är lite som i, men riktningen har ändrats. Vad betyder det? Du ger en sträng och letar efter ett fält i datan som innehåller denna sträng. Det vill säga, en given sträng är en delmängd av ett fält. SQL scrip{filter}t är skrivet så här.


Välj * från tabellen där jag gillar '%AD%'
Välj * från tabellen där jag gillar '%AD'
Välj * från tabellen där jag gillar 'AD%'
Procenten ovan är ett jokerkort, vilket indikerar att fältet innehåller ett värde, och den okända positionen ersätts med %. Den första är att ange att mittsektionen är e.Kr., och de två ändarna är oklara. Den andra är AD i slutet, och den föregående är oklar. Den tredje, däremot, börjar med AD och slutar otydligt. Den motsvarande Linq-satsen är:


var q = (från c i db. Kunder
där c.CustomerID.Contains("ROUT")
välj C). ToList();
Den SQL den genererar är


VÄLJ [t0]. [KundID], [t0]. [Företagsnamn], [t0]. [KontaktNamn], [t0]. [ContactT
itle], [t0]. [Adress], [t0]. [Stad], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådgivare
försök], [t0]. [Telefon], [t0]. [Fax]
FRÅN [dbo]. [Kunder] AS [t0]
DÄR [t0]. [Kund-ID] SOM @p0
-- @p0: Inmatningssträng (storlek = 6; Prec = 0; Skala = 0) [%UTSUT%]
Avslutar med ISSA, huvudjoker:


var q = (från c i db. Kunder
där c.CustomerID.EndsWith("ISSA")
välj C). ToList();
Den SQL den genererar är


VÄLJ [t0]. [KundID], [t0]. [Företagsnamn], [t0]. [KontaktNamn], [t0]. [ContactT
itle], [t0]. [Adress], [t0]. [Stad], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådgivare
försök], [t0]. [Telefon], [t0]. [Fax]
FRÅN [dbo]. [Kunder] AS [t0]
DÄR [t0]. [Kund-ID] SOM @p0
-- @p0: Indatasträng (storlek = 5; Prec = 0; Skala = 0) [%ISSA]
Börjar med ARO, svans-wildcard:


var q = (från c i db. Kunder
där c.CustomerID.StartsWith("ARO")
välj C). ToList();
Den SQL den genererar är


VÄLJ [t0]. [KundID], [t0]. [Företagsnamn], [t0]. [KontaktNamn], [t0]. [ContactT
itle], [t0]. [Adress], [t0]. [Stad], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådgivare
försök], [t0]. [Telefon], [t0]. [Fax]
FRÅN [dbo]. [Kunder] AS [t0]
DÄR [t0]. [Kund-ID] SOM @p0
-- @p0: Inmatningssträng (storlek = 4; Prec = 0; Skala = 0) [ARO%]

Linq tillhandahåller också en metod som heter SqlMethods.Like, som kräver att System.Data.Linq.SqlClient-namnrymden läggs till först. De tre ovanstående kan skrivas


var q = (från c i db. Kunder
där SqlMethods.Like(c.CustomerID, "%ROUT%")
välj C). ToList();
Här måste du fylla i jokerkoden själv för att berätta för Linq hur du matchade. Som vad


var q = (från c i db. Kunder
där SqlMethods.Like(c.CustomerID, "%ISSA")
välj C). ToList();
Ett annat exempel:


var q = (från c i db. Kunder
där SqlMethods.Like(c.CustomerID, "ARO%")
välj C). ToList();
Det mest fantastiska med SqlMethods.Like är att du kan implementera wildcards var som helst med dina egna definierade wildcard-uttryck. Som vad


var q = (från c i db. Kunder
där SqlMethods.Like(c.CustomerID, "A%O%T")
välj C). ToList();
Den SQL den genererar är


VÄLJ [t0]. [KundID], [t0]. [Företagsnamn], [t0]. [KontaktNamn], [t0]. [ContactT
itle], [t0]. [Adress], [t0]. [Stad], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådgivare
försök], [t0]. [Telefon], [t0]. [Fax]
FRÅN [dbo]. [Kunder] AS [t0]
DÄR [t0]. [Kund-ID] SOM @p0
-- @p0: Indatasträng (storlek = 5; Prec = 0; Skala = 0) [A%O%T]

Det mest standardiserade är att veta att den börjar på A och slutar på T, känner till värdet O i mitten och inte vet något annat. Använd bara detta.
SQL Server definierar fyra jokerkort, som alla finns tillgängliga här. De är:
Exempel på jokertecken Descrip{filter}tion
% Vilken sträng som helst med noll eller fler tecken. DÄR titel SOM '%computer%' hittar alla boktitlar med ordet 'computer' var som helst i boktiteln.
_ (understreck) Vilken enskild karaktär som helst. DÄR au_fname GILLAR '_ean' hittar alla fyrbokstavsförnamn som slutar på ean (Dean, Sean och så vidare).
[ ] Varje enskilt tecken inom det angivna intervallet ([a-f]) eller mängden ([abcdef]). DÄR au_lname SOM '[C-P]arsen' hittar författarens efternamn som slutar på arsen och börjar på vilket enskilt tecken som helst mellan C och P, till exempel Carsen, Larsen, Karsen och så vidare.
[^] Varje enskilt tecken som inte ligger inom det angivna intervallet ([^a-f]) eller mängden ([^abcdef]). DÄR au_lname SOM 'de[^l]%' alla författarnamn som börjar med de och där följande bokstav inte är l.

% representerar en sträng av noll längd eller vilken längd som helst. _ indikerar en karaktär. [] indikerar en karaktär inom ett räckviddsintervall. [^] indikerar ett tecken som inte ligger inom ett visst intervall
Som vad:


var q = (från c i db. Kunder
där SqlMethods.Like(c.CustomerID, "A_O_T")
välj C). ToList();
Använd bara _ för att representera en karaktär. Den genererade SQL:en är:


VÄLJ [t0]. [KundID], [t0]. [Företagsnamn], [t0]. [KontaktNamn], [t0]. [ContactT
itle], [t0]. [Adress], [t0]. [Stad], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådgivare
försök], [t0]. [Telefon], [t0]. [Fax]
FRÅN [dbo]. [Kunder] AS [t0]
DÄR [t0]. [Kund-ID] SOM @p0
-- @p0: Indatasträng (storlek = 5; Prec = 0; Skala = 0) [A_O_T]

För Not Like är det också väldigt enkelt, lägg bara till ett nonsens.


var q = (från c i db. Kunder
Var! SqlMethods.Like(c.CustomerID, "A_O_T")
välj C). ToList();

SqlMethods.Like har också en parameter som kallas escape character, som kommer att översättas till en sats som följande.


VÄLJ kolumner FRÅN tabell VAR
kolumnen SOM '%\%%' ESCAPE '\'
escape beror på att ett fält innehåller specialtecken, såsom %,_ [ ], som används som jokrar. Det är där Escape kommer in. Det här är en SQL Server-grej.





Föregående:Webbplatsprestandaoptimering: Detaljerad förklaring av cache-kontrollinställningar
Nästa:Ruijie har alltid varit bestämd med vad som pågår
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com