0
  • 我正在使用 Microsoft SQL 2005
  • “某人”给了我一个INSERT“预定义语句”列表,我不能在 SQL 之外修改(例如,使用 Python 等脚本语言)。
  • 作为“某人”,我在尝试为type 字段转义引用字符NVARCHAR时遇到问题。

比如说我需要运行以下 SQL 语句:

INSERT INTO TableX VALUES('John Doe's value') -- This is not working because of single quotes...

我需要找到一种方法来将该字符串转换为 insert ( John Doe's value),而无需使用 SQL 语句之外的方法。

我没有成功地尝试过类似以下语句,将一个单引号与一个REPLACE函数和另一个单引号连接起来:

INSERT INTO TableX VALUES('' + REPLACE('John Doe's value'), ''', '''' + '')

或者

INSERT INTO TableX VALUES('''''' + REPLACE(''''''John Doe's value'''''''), '''''', '''''''' + '''''')

为了处理转义字符,但它不起作用。

我更喜欢使用函数或类似的简单东西,而不是使用存储过程或更复杂的解决方案。

4

1 回答 1

1

如果您在 SQL Server 中接受,我强烈建议您停止接受 INSERT 语句并提供具有明确定义的参数和数据类型的存储过程。否则,您将容易受到注入攻击(我同意您的 API 的内部客户端不会这样做,但您的 API 将易受攻击,仅此而已!)。

顺便说一句,函数和存储过程在这种情况下所涉及的复杂性方面都是相似的。

于 2012-08-23T12:33:57.940 回答