2010-08-24 20 views
5

SET @whereCond = @whereCond + 'y nombre como '' %' '+ + @ name '' % '''Usando LIKE en sp_executesql

¿Hay algo mal aquí? Después de generar dónde estado, lo ejecuto con sp_executesql, pero obtuve algo. Cuando selecciono lo mismo sin sp, está bien.

¿Cómo utilizar LIKE en sp_executesql? ¿Puedes traer algunos ejemplos, por favor?

Gracias.

ACTUALIZACIÓN

declare @name nvarchar(50) 

set @name = 'a' 

SELECT * 
    FROM Tbl_Persons WHERE 1 = 1 AND lastname LIKE '%a%' 

exec sp_executesql 
    N'SELECT * 
    FROM Tbl_Persons WHERE 1 = 1 AND lastname LIKE ''%@name%''', 
    N'@name nvarchar(50)', 
    @[email protected] 

Primera consulta devuelve los valores, segundo no devuelve nada.

¿Cuál es la diferencia?

Respuesta

14

las siguientes obras para mí

declare @name varchar(50) 

set @name = 'WAITFOR' 


exec sp_executesql 
    N'select * from sys.messages WHERE text LIKE ''%'' + @name + ''%''', 
    N'@name varchar(50)', 
    @[email protected] 

creo que el problema debe estar en otra parte.

Editar: A raíz de su actualización es necesario utilizar

exec sp_executesql 
    N'SET @name = ''%'' + @name + ''%''; 
    SELECT * 
    FROM Tbl_Persons WHERE 1 = 1 AND lastname LIKE @name', 
    N'@name nvarchar(50)', 
    @[email protected] 

En su forma actual que está buscando para el texto que contiene la subcadena real @name

+0

He comprobado la secuencia de comandos y está funcionando, pero la mía no funciona He editado mi pregunta. gracias. – hgulyan

+1

Trabajos. Gracias por la ayuda. – hgulyan