Il funzionamento di Like è un po' simile a in, ma la direzione è cambiata. Che cosa significa? Dai una stringa e cerchi un campo nei dati che contiene questa stringa. Cioè, una data stringa è un sottoinsieme di un campo. SQL scrip{filter}t è scritto così.
Seleziona * dalla tabella dove vorrei '%AD%' Seleziona * dalla tabella dove vorrei '%AD' Seleziona * dalla tabella dove vorrei 'AD%' La percentuale sopra è un jolly, indicando che il campo contiene un valore, e la posizione sconosciuta viene sostituita da %. La prima serve a indicare che la sezione centrale è d.C., e le due estremità non sono chiare. La seconda è AD alla fine, e la precedente non è chiara. Il terzo, al contrario, inizia con AD e termina in modo poco chiaro. La corrispondente affermazione Linq è:
var q = (da c in db. Clienti dove c.CustomerID.Contiene ("ROUT") seleziona c). ToList(); L'SQL che genera è
SELEZIONA [t0]. [CustomerID], [t0]. [NomeAzienda], [t0]. [NomeContatto], [t0]. [ContattT itle], [t0]. [Indirizzo], [t0]. [Città], [t0]. [Regione], [t0]. [CAP], [t0]. [Consiglio try], [t0]. [Telefono], [t0]. [Fax] DA [dbo]. [Clienti] AS [t0] DOVE [t0]. [CustomerID] COME @p0 -- @p0: stringa di input (dimensione = 6; Prec = 0; Scala = 0) [%ROUT%] Concludendo con ISSA, la wild card principale:
var q = (da c in db. Clienti dove c.CustomerID.EndsWith("ISSA") seleziona c). ToList(); L'SQL che genera è
SELEZIONA [t0]. [CustomerID], [t0]. [NomeAzienda], [t0]. [NomeContatto], [t0]. [ContattT itle], [t0]. [Indirizzo], [t0]. [Città], [t0]. [Regione], [t0]. [CAP], [t0]. [Consiglio try], [t0]. [Telefono], [t0]. [Fax] DA [dbo]. [Clienti] AS [t0] DOVE [t0]. [CustomerID] COME @p0 -- @p0: stringa di input (dimensione = 5; Prec = 0; Scala = 0) [%ISSA] A partire da ARO, coda wildcard:
var q = (da c in db. Clienti dove c.CustomerID.StartsWith("ARO") seleziona c). ToList(); L'SQL che genera è
SELEZIONA [t0]. [CustomerID], [t0]. [NomeAzienda], [t0]. [NomeContatto], [t0]. [ContattT itle], [t0]. [Indirizzo], [t0]. [Città], [t0]. [Regione], [t0]. [CAP], [t0]. [Consiglio try], [t0]. [Telefono], [t0]. [Fax] DA [dbo]. [Clienti] AS [t0] DOVE [t0]. [CustomerID] COME @p0 -- @p0: stringa di input (dimensione = 4; Prec = 0; Scala = 0) [ARO%]
Linq fornisce anche un metodo chiamato SqlMethods.Like, che richiede di aggiungere prima lo spazio di nomi System.Data.Linq.SqlClient. I tre precedenti possono essere scritti
var q = (da c in db. Clienti dove SqlMethods.Like(c.CustomerID, "%ROUT%") seleziona c). ToList(); Qui, devi compilare tu stesso il jolly per dire a Linq come sei stato abbinato. Come cosa
var q = (da c in db. Clienti dove SqlMethods.Like(c.CustomerID, "%ISSA") seleziona c). ToList(); Un altro esempio:
var q = (da c in db. Clienti dove SqlMethods.Like(c.CustomerID, "ARO%") seleziona c). ToList(); La cosa più sorprendente di SqlMethods. Ad esempio, è che puoi implementare le carte jolly ovunque con le tue espressioni jolly definite. Come cosa
var q = (da c in db. Clienti dove SqlMethods.Like(c.CustomerID, "A%O%T") seleziona c). ToList(); L'SQL che genera è
SELEZIONA [t0]. [CustomerID], [t0]. [NomeAzienda], [t0]. [NomeContatto], [t0]. [ContattT itle], [t0]. [Indirizzo], [t0]. [Città], [t0]. [Regione], [t0]. [CAP], [t0]. [Consiglio try], [t0]. [Telefono], [t0]. [Fax] DA [dbo]. [Clienti] AS [t0] DOVE [t0]. [CustomerID] COME @p0 -- @p0: stringa di input (dimensione = 5; Prec = 0; Scala = 0) [A%O%T]
La cosa più standard è sapere che inizia con A e termina con T, conosce un valore O al centro e non conosce altro. Usa semplicemente questo. SQL Server definisce quattro jolly, tutti disponibili qui. Sono: Esempio di personaggio jolly Descrip{filter}tion % Qualsiasi stringa di zero o più caratteri. DOVE titoli come '%computer%' trovano tutti i titoli di libri con la parola 'computer' ovunque nel titolo. _ (sottolinea) Qualsiasi singolo carattere. DOVE au_fname COME '_ean' trova tutti i nomi di battesimo di quattro lettere che terminano con ean (Dean, Sean, e così via). [ ] Qualsiasi singolo carattere all'interno dell'intervallo specificato ([a-f]) o dell'insieme ([abcdef]). DOVE au_lname COME '[C-P]arsen' trovi cognomi autori che terminano con arsen e iniziano con un singolo carattere tra C e P, ad esempio Carsen, Larsen, Karsen, e così via. [^] Qualsiasi singolo carattere non rientrato nell'intervallo specificato ([^a-f]) o nel set ([^abcdef]). DOVE au_lname COME 'de[^l]%' tutti i cognomi dell'autore che iniziano con de e dove la lettera seguente non è l.
% rappresenta una stringa di lunghezza zero o qualsiasi lunghezza. _ indica un carattere. [] indica un carattere in un intervallo. [^] indica un carattere che non è in un certo intervallo Come cosa:
var q = (da c in db. Clienti dove SqlMethods.Like(c.CustomerID, "A_O_T") seleziona c). ToList(); Basta usare _ per rappresentare un personaggio. Il SQL generato è:
SELEZIONA [t0]. [CustomerID], [t0]. [NomeAzienda], [t0]. [NomeContatto], [t0]. [ContattT itle], [t0]. [Indirizzo], [t0]. [Città], [t0]. [Regione], [t0]. [CAP], [t0]. [Consiglio try], [t0]. [Telefono], [t0]. [Fax] DA [dbo]. [Clienti] AS [t0] DOVE [t0]. [CustomerID] COME @p0 -- @p0: stringa di input (dimensione = 5; Prec = 0; Scala = 0) [A_O_T]
Per il Non Piacere, è anche molto semplice, basta aggiungere un nonsense.
var q = (da c in db. Clienti dove! SqlMethods.Like(c.CustomerID, "A_O_T") seleziona c). ToList();
SqlMethods.Like ha anche un parametro chiamato carattere di fuga, che verrà tradotto in un'affermazione come la seguente.
SELECT colonne FROM table WHERE colonna LIKE '%\%%' ESCAPE '\' Escape è dovuto al fatto che un campo contiene caratteri speciali, come %,_ [ ], che vengono usati come jolly. Ed è qui che entra in gioco Escape. È una cosa di SQL Server.
|