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