esq*_*are 82 sql-server escaping char
我想使用带有转义字符的引号.我能怎么做?
我在SQL Server中收到错误
字符串后面的未闭合引号.
我在varchar变量中编写sql查询但是我收到了这个错误:
字符串后面的未闭合引号.
我想用引号作为转义字符.
提前致谢
dug*_*tov 103
你可以像这样逃避报价:
select 'it''s escaped'
Run Code Online (Sandbox Code Playgroud)
结果将是
it's escaped
Run Code Online (Sandbox Code Playgroud)
Ada*_*Dev 62
如果您将SQL连接到要执行的VARCHAR(即动态SQL),那么我建议参数化SQL.这有助于防止SQL注入加上意味着你不必担心像这样转义引号(你通过加倍引号来做).
例如,而不是做
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = ''AAA'''
EXECUTE(@SQL)
Run Code Online (Sandbox Code Playgroud)
试试这个:
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = @Field1'
EXECUTE sp_executesql @SQL, N'@Field1 VARCHAR(10)', 'AAA'
Run Code Online (Sandbox Code Playgroud)
小智 36
您可以定义转义字符,但只能将其与LIKE子句一起使用.
例:
SELECT columns FROM table
WHERE column LIKE '%\%%' ESCAPE '\'
Run Code Online (Sandbox Code Playgroud)
在这里它将搜索%整个字符串,这是如何使用ESCAPE标识符SQL Server.
Sep*_*eph 18
你需要只需更换'与''您的字符串内
SELECT colA, colB, colC
FROM tableD
WHERE colA = 'John''s Mobile'
Run Code Online (Sandbox Code Playgroud)
您还可以使用REPLACE(@name, '''', '''''')if动态生成SQL
如果要在类似语句中转义,则需要使用ESCAPE语法
值得一提的是,如果你不考虑它,你会让自己接受SQL注入攻击.有关Google的更多信息,请访问:http://it.toolbox.com/wiki/index.php/How_do_I_escape_single_quotes_in_SQL_queries%3F
| 归档时间: |
|
| 查看次数: |
349495 次 |
| 最近记录: |