T-SQL和WHERE LIKE%Parameter%子句

时间:2013-01-09 14:45:04

标签: sql sql-server-2008 tsql

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

未找到任何结果。有什么建议?提前谢谢。

3 个答案:

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