2011-10-18 15 views
6

Quiero realizar una pequeña búsqueda en el servidor SQL en mi proyecto web ASP.NET, mi base de datos no es grande, así que creo que es mejor no usar la búsqueda de texto completo Quiero realizar una búsqueda simple como esto:Consultas utilizando comodines LIKE en el servidor sql

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

puedo usar = de la siguiente manera:

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

pero ¿cómo puedo usar una variable en lugar de %something% en frases como? ¿es correcto? LIKE '"+%myVariable%+"' ???

utilizo VS2010, C#

gracias

+4

Correcto, pero también muy malo. La concatenación de cadenas para hacer declaraciones SQL puede dejarlo abierto a la inyección de SQL. Suponiendo que myVariable tiene valor ''; drop table mytable;'? Mire las consultas parametrizadas o una de las variedades de Linq para interactuar con un DB – spender

+0

@spender: la validación de seguridad debe realizarse antes de la ejecución de una consulta de todos modos, por lo que esta no es una cuestión de consulta en sí misma – sll

+3

@sll No lo compro. Es difícil "validar la seguridad" de cadenas que se mezclarán en sentencias de SQL. Es mejor simplemente no hacerlo. – spender

Respuesta

7

Uso:

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

¿Por qué se usan diferentes corchetes? – sll

+0

Creo que estás hablando de comillas simples y dobles. Lo utilicé como un ejemplo de la consulta dada en la pregunta, como esta: 'select * from mytable donde columnA = '" + myVariable + "''. Entonces, en esta consulta, si desea usar 'LIKE', agregue'% 'después de la comilla simple (' '') y ciérrela de manera similar. –

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

Bien se podría hacer algo como:

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

Intentar esta consulta:

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

espero que ayude.

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

En caso de que alguien más se tropiece con esta publicación como yo. En SSMS 2012 con un servidor SQL 2012 Server pude usar el código de la siguiente manera sin problemas.

Declare @MyVariable 

Set @MyVariable = '%DesiredString%' 

Select * 

From Table_A 

Where Field_A like @MyVariable 

Luego, cada vez que desee cambiar la Cadena deseada simplemente cámbiela en la instrucción Establecer.

Sé que esta publicación se realizó antes de 2012, es por eso que lo menciono en caso de que alguien con una configuración más reciente busque esta publicación.

Cuestiones relacionadas