SQL Server中是否有与Oracle的报价运算符等效的运算符?



我正在重写。NET应用程序,该应用程序利用Oracle查询,并将它们更改为SQL Server查询。我正在重写的一个查询如下:

INSERT INTO MY_TABLE (ID, NAME, DESCRIPTION) VALUES (3, q'§Testing some" test' data'"' §', q'§More'"'test data"'''"§')

我的猜测是,使用引号运算符的目的是防止SQL注入,因为这个查询中的值实际上来自客户端。然而,在SQL Server中查找某些内容时,我找不到任何能很好地完成任务的内容。

我确实在这里找到了这篇文章:https://chartio.com/learn/sql-tips/single-double-quote-and-backticks-in-mysql-queries/.然而,对于单引号和双引号,本文中唯一的解决方案似乎是使用反斜杠。在网上寻找其他解决方案时,我得到了同样的答案。

在SQL Server中,我是否可以设置类似的查询,而不必修改插入的值的内容(即放入反斜杠(?

简短的回答是

解决方法是使用参数化输入,或使用双单引号''手动转义引号。如果您有现有的脚本来转换,可以使用一个简单的regex来清理它们。在SQL中,恢复SQL将类似于以下内容:

INSERT INTO MY_TABLE (ID, NAME, DESCRIPTION) VALUES (3, 'Testing some" test'' data''"'' ', 'More''"''test data"''''''"')

这将导致以下输出:

ID名称描述
3测试一些";测试"数据">更多"测试数据"">

相关内容

  • 没有找到相关文章