Ind*_*mes 4 sql t-sql sql-server stored-procedures
我正在尝试使用包含参数的%通配符的LIKE关键字,但我不确定如何在不破坏它的情况下将%字符放入语句中.现在我有:
SET @SQLQuery = 'SELECT * FROM [tblApps] WHERE [firstName] LIKE %@search%'
Run Code Online (Sandbox Code Playgroud)
我的.net应用程序中出现SqlException错误,当我运行它时,"@ search"附近的语法不正确.如果删除@search参数周围的%字符,则错误消失.
Av *_*zur 23
%字符必须在搜索字符串中...
SET @search = '%' + @search + '%'
SET @SQLQuery = 'SELECT * FROM [tblApps] WHERE [firstName] LIKE @search'
Run Code Online (Sandbox Code Playgroud)
请注意,以下内容也可以,但引入了SQL注入漏洞的可能性......
-- DON'T do this!
SET @SQLQuery = 'SELECT * FROM [tblApps] WHERE [firstName] LIKE ''%' + @search + '%'''
Run Code Online (Sandbox Code Playgroud)
SET @SQLQuery = 'SELECT * from [tblApps] WHERE [firstName] LIKE ''%'' + @search + ''%'''
exec sp_executesql @query=@SQLQuery, @params=N'@search nvarchar(96)', @search=@search
Run Code Online (Sandbox Code Playgroud)
与其他版本相比,此版本的唯一区别在于,实际上已对sql的动态执行进行了参数化,从而稍微减轻了sql的注入。
| 归档时间: |
|
| 查看次数: |
24395 次 |
| 最近记录: |