我试图编写一个使用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%'
未找到任何结果。有什么建议?提前谢谢。
答案 0 :(得分:133)
应该是:
...
WHERE LastName LIKE '%' + @LastName + '%';
而不是:
...
WHERE LastName LIKE '%@LastName%'
答案 1 :(得分:15)
正确的答案是,因为'%'
- 符号是搜索表达式的一部分,所以它应该是您的VALUE的一部分,所以无论你设置@LastName
(是否来自编程语言)或者来自TSQL)您应该将其设置为'%' + [userinput] + '%'
或者,在您的示例中:
DECLARE @LastName varchar(max)
SET @LastName = 'ning'
SELECT Employee WHERE LastName LIKE '%' + @LastName + '%'
答案 2 :(得分:2)
您可以尝试使用 CONCAT
WHERE LastName LIKE Concat('%',@LastName,'%')