T-SQL和WHERE LIKE%参数%子句

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

未find结果。 有什么build议么? 提前致谢。

它应该是:

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

代替:

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

或这个:

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

正确的答案是,因为'%' sign是你的searchexpression式的一部分,所以它应该是你的VALUE的一部分,所以无论你SET @LastName (来自编程语言还是TSQL),你都应该设置它到'%' + [userinput] + '%'

或者,在你的例子中:

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

你可以试试这个,使用CONCAT

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