我想使用带转义字符的引号。我能怎么做?
我在SQL Server中收到错误
字符串后的引号引起来。
我在varchar
变量中编写SQL查询,但收到该错误:
字符串后的引号引起来。
我想将引号用作转义字符。
我想使用带转义字符的引号。我能怎么做?
我在SQL Server中收到错误
字符串后的引号引起来。
我在varchar
变量中编写SQL查询,但收到该错误:
字符串后的引号引起来。
我想将引号用作转义字符。
Answers:
要逃脱,'
您只需在前面加上另一个即可:''
如第二个答案所示,可以像这样转义单引号:
select 'it''s escaped'
结果将是
it's escaped
如果要将SQL连接到VARCHAR中以执行(即动态SQL),则建议对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 colA, colB, colC
FROM tableD
WHERE colA = 'John''s Mobile'
REPLACE(@name, '''', '''''')
如果动态生成SQL,也可以使用
如果要在like语句中转义,则需要使用ESCAPE语法
还值得一提的是,如果您不考虑SQL注入攻击,那么您将自己敞开大门。有关更多信息,请访问Google或:http : //it.toolbox.com/wiki/index.php/How_do_I_escape_single_quotes_in_SQL_queries%3F
select '
返回错误Unclosed quotation mark after the character string ''
。我的答案中无处使用"
两个'
,不确定为什么我的投票是唯一的否决。
MSSQL中的转义引号由双引号完成,因此a ''
或a ""
将分别产生一个转义的'
和"
。
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';