2011-10-18 20 views
6

Voglio eseguire una piccola ricerca del server SQL nel mio progetto Web ASP.NET, il mio database non è grande quindi penso che sia meglio non utilizzare la ricerca full-text Voglio eseguire una semplice ricerca come questa:Query che utilizzano i caratteri jolly LIKE nel server sql

select * from mytable where columnA LIKE '%something%' 

posso usare = nel seguente modo:

select * from mytable where columnA='"+myVariable+"' 

ma come posso usare una variabile anziché %something% in LIKE frase? è corretto? LIKE '"+%myVariable%+"' ???

Io uso VS2010, C#

grazie

+4

Corretto ma anche molto negativo. La concatenazione di stringhe per rendere dichiarazioni SQL può lasciarti completamente aperto all'iniezione SQL. Supponendo che myVariable abbia valore ''; drop table mytable;'? Esamina le query parametrizzate o una delle varietà Linq per l'interazione con un DB – spender

+0

@spender: la convalida della sicurezza deve essere eseguita prima dell'esecuzione di una query, quindi questa non è una questione di query stessa – sll

+3

@sll Non la compro. È difficile "stringere la sicurezza" stringhe che verranno mescolate in istruzioni SQL. È meglio semplicemente non farlo. – spender

risposta

7

Usa:

where columnA LIKE '%' + myVariable + '%' 
+0

Perché si usano parentesi diverse? – sll

+0

Penso che tu stia parlando delle virgolette singole e doppie. L'ho usato come esempio dalla query fornita nella domanda, in questo modo: 'select * from mytable where columnA = '" + myVariable + "''. Quindi, in questa query, se vuoi usare 'LIKE', aggiungi'% 'dopo la citazione singola (' '') e allo stesso modo chiudi. –

8
WHERE 
columnName LIKE '%' + myVarCharVariable +'%' 
0

Beh si potrebbe fare qualcosa di simile:

var query = "SELECT * FROM MyTable WHERE columnA LIKE '%" + myVariable + "%'"; 
5

Prova questa ricerca:

select * from tablename where colname like '%' + @varname + '%' 

Speranza che aiuta.

1
DECLARE @myVariable varchar(MAX) 
SET @myVariable = 'WhatYouAreLookingFor' 
SELECT * FROM mytable 
    WHERE columnA LIKE '%' + @myVariable + '%' 
1

Nel caso in cui qualcun altro inciampa in questo post come ho fatto io. Su SSMS 2012 con un back-end di SQL 2012 Server sono stato in grado di utilizzare il codice come segue senza problemi.

Declare @MyVariable 

Set @MyVariable = '%DesiredString%' 

Select * 

From Table_A 

Where Field_A like @MyVariable 

Quindi, ogni volta che si desidera modificare la stringa desiderata, è sufficiente modificarla nell'istruzione Imposta.

So che questo post è stato fatto prima del 2012 ed è per questo che lo menziono nel caso in cui qualcuno con una configurazione più recente consulta questo post.

Problemi correlati