2010-08-24 8 views
5

SET @whereCond = @whereCond + 'AND name LIKE '' %' '+ @name + '' % '''LIKE in Sp_executesql

Gibt es hier etwas nicht in Ordnung? Nachdem ich die Bedingung erzeugt habe, führe ich sie mit sp_executesql aus, aber ich habe nichts bekommen. Wenn ich dasselbe ohne SP wähle, ist es in Ordnung.

Wie verwendet man LIKE in sp_executesql? Können Sie bitte ein paar Beispiele mitbringen?

Vielen Dank.

UPDATE

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] 

erste Abfrage Werte zurückgibt, wird zweite nichts zurück.

Was ist der Unterschied?

Antwort

14

Die folgenden Werke für mich

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] 

denke ich, das Problem woanders liegen.

Edit: Nach Ihrem Update benötigen Sie

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

zu verwenden, wie es steht Sie für Text suchen den tatsächlichen String enthalten @name

+0

Ich habe das Skript überprüft und es funktioniert, aber ich funktioniert nicht. Ich habe meine Frage bearbeitet. Danke. – hgulyan

+1

Werke. Danke für die Hilfe. – hgulyan