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,'%')