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.
|