1

我是新手,正在寻求经验丰富的专业人士的建议。

我有一个 T-SQL 查询,其中包含某些值的变量(见下文)。

BEGIN  
  --SET @Where = @Where + ' AND WebName = '''+ @SearchKey + ' '' <br>OR Name = '''+ @SearchKey +''''  
  SET @Where = @Where + ' AND WebName like ''%'+ @SearchKey +  '%'' OR Name like ''%'+ @SearchKey +'%'''
END  

问题是何时填充信息。一些变量需要处理单引号而不会出错。如何处理来自变量信息的单引号?

4

2 回答 2

4

所以,让我们从危险的地方开始。您对SQL 注入持开放态度。

您应该参数化您的 SQL,这将解决危险问题以及流氓撇号问题。

以下是您应该阅读和自学的一些资源:

  1. http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or-give-me-death.html
  2. http://software-security.sans.org/developer-how-to/fix-sql-injection-microsoft-.net-with-parameterized-queries
于 2013-08-16T20:08:54.340 回答
0

您无需担心转义'SQL varchar 变量中的字符。转义一次(在设置或选择时)就足够了。

看这个演示

declare @a nvarchar(100),
        @b nvarchar(100),
        @name nvarchar(100)

set @a = 'Hi, ';
set @name = 'Jim''my O''Tool';
set @b = ', you champ.'

select @name
select @a + @name + @b
于 2013-08-16T20:29:26.567 回答