dp3*_*dp3 67 sql t-sql sql-server-2008
我试图编写一个使用WHERE LIKE'%text%'子句的语句,但是当我尝试使用文本参数时,我没有收到结果.例如,这有效:
SELECT Employee WHERE LastName LIKE '%ning%'
Run Code Online (Sandbox Code Playgroud)
这将返回用户Flenning,Manning,Ningle等.但是这句话不会:
DECLARE @LastName varchar(max)
SET @LastName = 'ning'
SELECT Employee WHERE LastName LIKE '%@LastName%'
Run Code Online (Sandbox Code Playgroud)
未找到结果.有什么建议?提前致谢.
Mah*_*mal 139
它应该是:
...
WHERE LastName LIKE '%' + @LastName + '%';
Run Code Online (Sandbox Code Playgroud)
代替:
...
WHERE LastName LIKE '%@LastName%'
Run Code Online (Sandbox Code Playgroud)
swe*_*swe 15
正确的答案是,因为'%'-sign是你的搜索表达式的一部分,它应该是你的VALUE的一部分,所以无论你使用SET @LastName(从编程语言还是从TSQL),你应该将它设置为'%' + [userinput] + '%'
或者,在您的示例中:
DECLARE @LastName varchar(max)
SET @LastName = 'ning'
SELECT Employee WHERE LastName LIKE '%' + @LastName + '%'
Run Code Online (Sandbox Code Playgroud)
Ram*_*rja 12
你可以试试这个,用过CONCAT
WHERE LastName LIKE Concat('%',@LastName,'%')
Run Code Online (Sandbox Code Playgroud)