T-SQL和WHERE LIKE%Parameter%子句

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)

  • 这不适合我.%需要位于addParameter部分.请参阅James Curran在这里回答http://stackoverflow.com/questions/251276/howto-parameters-and-like-statement-sql (2认同)
  • 请参阅我的答案(当前在下方)。通配符符号是SEARCH表达式的一部分,而不是sql查询的一部分。它由USER输入(或者,如果预定义了通配符搜索,则将其附加到用户搜索表达式输入中)。如果在数据库级别通过字符串连接附加它,则会得到不可重用的查询字符串 (2认同)

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)