T-SQL 和 WHERE LIKE %Parameter% 子句

问题描述 投票:0回答:3

我试图编写一个使用 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%'

未找到结果。有什么建议吗?

sql sql-server t-sql prepared-statement sql-like
3个回答
206
投票

应该是:

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

代替:

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

19
投票

你可以试试这个,用过CONCAT

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

18
投票

正确的答案是,因为

'%'
符号是您的搜索表达式的一部分,所以它应该是您的 VALUE 的一部分,因此无论您在何处设置
@LastName
(无论是来自编程语言还是来自 TSQL),您都应该将其设置为
'%' + [userinput] + '%'

或者,在你的例子中:

DECLARE @LastName varchar(max)
SET @LastName = 'ning'
SELECT Employee WHERE LastName LIKE '%' + @LastName + '%'
© www.soinside.com 2019 - 2024. All rights reserved.