Подтвердить что ты не робот

T-SQL и предложение WHERE LIKE% Parameter%

Я пытался написать инструкцию, которая использует предложение WHERE LIKE '% text%', но я не получаю результаты, когда пытаюсь использовать параметр для текста. Например, это работает:

SELECT Employee WHERE LastName LIKE '%ning%'

Это приведет к возврату пользователей Flenning, Manning, Ningle и т.д. Но это утверждение не будет:

DECLARE @LastName varchar(max)
SET @LastName = 'ning'
SELECT Employee WHERE LastName LIKE '%@LastName%'

Результаты не найдены. Какие-либо предложения? Спасибо заранее.

4b9b3361

Ответ 1

Это должно быть:

...
WHERE LastName LIKE '%' + @LastName + '%';

Вместо:

...
WHERE LastName LIKE '%@LastName%'

Или это:

...
WHERE LastName LIKE Concat('%',@LastName,'%')

Ответ 2

Правильный ответ заключается в том, что, поскольку '%' -sign является частью вашего выражения поиска, он должен быть частью вашего VALUE, поэтому, если бы вы установили SET @LastName (будь то с языка программирования или из TSQL) вы должны установить его на '%' + [userinput] + '%'

или, в вашем примере:

DECLARE @LastName varchar(max)
SET @LastName = 'ning'
SELECT Employee WHERE LastName LIKE '%' + @LastName + '%'

Ответ 3

вы можете попробовать это, используя CONCAT

WHERE LastName LIKE Concat('%',@LastName,'%')