Использование LIKE в sp executesql

SET @whereCond = @whereCond + 'и имя, как" % " + @name+"%"'

здесь что-то не так? После создания условия where я выполняю его с помощью sp_executesql, но я вам ничего. Когда я выбираю то же самое без sp, все в порядке.

Как использовать LIKE в sp_executesql? Приведите примеры, пожалуйста.

спасибо.

обновление

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)',
  @name=@name

первый запрос возвращает значения, второй-нет ничего возвращать.

в чем разница?

1 ответов


следующее работает для меня

declare @name varchar(50)

set @name = 'WAITFOR'


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

Я думаю, что проблема должна лежать в другом месте.

Edit: после обновления вам нужно использовать

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

как это стоит вы ищете текст, содержащий фактическую подстроку @name