SQL Server中的转义字符

我想使用带有转义字符的引号。 我能怎么做?

我在SQL Server中收到错误

string之后未引用引号。

我在一个varcharvariables写入sql查询,但我收到该错误:

string之后未引用引号。

我想用引号作为转义字符。

提前致谢

如果你把SQL连接到一个VARCHAR来执行(即dynamicSQL),那么我build议参数化SQL。 这有助于防止SQL注入的好处,也意味着你不必担心这样的引号(这是你通过加倍引号)。

例如,而不是做

DECLARE @SQL NVARCHAR(1000) SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = ''AAA''' EXECUTE(@SQL) 

尝试这个:

 DECLARE @SQL NVARCHAR(1000) SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = @Field1' EXECUTE sp_executesql @SQL, N'@Field1 VARCHAR(10)', 'AAA' 

你可以像这样逃脱引号:

 select 'it''s escaped' 

结果将是

 it's escaped 

你可以定义你的转义字符,但是你只能用LIKE子句来使用它。

例:

 SELECT columns FROM table WHERE column LIKE '%\%%' ESCAPE '\' 

在这里它将search整个string中的% ,这是如何在SQL Server使用ESCAPE标识符的。

MSSQL中的转义引号是由双引号完成的,因此''""将分别产生一个'"

你只需要replace你的string中的' with ''

 SELECT colA, colB, colC FROM tableD WHERE colA = 'John''s Mobile' 

如果dynamic生成SQL REPLACE(@name, '''', '''''')也可以使用REPLACE(@name, '''', '''''')

如果你想在一个类似的语句中转义,那么你需要使用ESCAPE语法

另外值得一提的是,如果您不考虑SQL注入攻击,那么您已经开放了。 Google或更多信息: http : //it.toolbox.com/wiki/index.php/How_do_I_escape_single_quotes_in_SQL_queries%3F