Использование 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