2010-08-24 17 views
5

SET @whereCond = @whereCond + 'e nome come '' %' '+ @name + '' % '''Utilizzando LIKE in sp_executesql

C'è qualcosa che non va? Dopo aver generato la condizione, l'ho eseguita con sp_executesql, ma ho ricevuto qualcosa. Quando SELEZIONA la stessa cosa senza sp, va bene.

Come utilizzare LIKE in sp_executesql? Puoi portare alcuni esempi, per favore?

Grazie.

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] 

prima query restituisce valori, secondo non restituisce nulla.

Qual è la differenza?

risposta

14

i seguenti lavori per me

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] 

Credo che il problema deve trovarsi altrove.

Edit: Dopo l'aggiornamento è necessario utilizzare

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

Così com'è si sta cercando di testo contenente la stringa effettiva @name

+0

Ho controllato lo script e che sta funzionando, ma il mio non funziona Ho modificato la mia domanda. grazie. – hgulyan

+1

Works. Grazie per l'aiuto. – hgulyan