Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何插入像';D’;阿塔尼南';通过SQL插入到数据库表?_Sql_Insert - Fatal编程技术网

如何插入像';D’;阿塔尼南';通过SQL插入到数据库表?

如何插入像';D’;阿塔尼南';通过SQL插入到数据库表?,sql,insert,Sql,Insert,也许很简单,但现在对我来说是个问题 如何通过SQL insert将类似“D'Artagnan”的字符串插入数据库表 我试过: DECLARE @spcChar nvarchar(1); DECLARE @2spcChar nvarchar(2); DECLARE @newString nvarchar(50); DECLARE @tmpChar nvarchar(50); SET @spcChar = CHAR(39); SET @tmpStr = 'D'Artagnan'; -> F

也许很简单,但现在对我来说是个问题

如何通过SQL insert将类似“D'Artagnan”的字符串插入数据库表

我试过:

DECLARE @spcChar nvarchar(1);
DECLARE @2spcChar nvarchar(2);
DECLARE @newString nvarchar(50);
DECLARE @tmpChar nvarchar(50);

SET @spcChar = CHAR(39);

SET @tmpStr = 'D'Artagnan'; -> FAIL
SET @tmpStr = 'D'+ @spcChar + 'Artagnan';

SET @2spcChar = @spcChar + @spcChar;

SET @newString = REPLACE( @tmpStr, @spcChar, @2spcChar );

-- Return the result of the function
RETURN @newString;    -> == 'D'!!!

不是很漂亮,但只是为了测试,您可以通过加倍在SQL中对引号进行编码:

select 'D''Artagnan';
返回:

D'Artagnan
如果您是通过编程语言执行查询,请将值读入变量,例如,
name
,然后将该变量绑定到查询。你没有告诉我你用的是什么语言,但可能是这样的:

sql = 'insert into t values (?)'
db.execute(sql, name)

我想做的是将D'Artagnan(用户输入)更改为'D'+CHAR(39)+'Artagnan'

我现在的想法是使用一个函数“捕获”用户输入,检查输入(1)并在需要时返回(2)

但INSERT是检查的正确位置吗


这是“Microsoft SQL Server Management Studio 17”,用户使用“编辑最上面的nnn行”编辑表。

请查看您正在使用的数据库。您对我的回答的最后一条评论表明您正在询问如何用编程语言处理此问题,所以,更新问题并用编程语言标记它。@JustMe您是否考虑过引用值-如
和“`都与标识符有关,需要引用-我只想使用双引号,但在SQL中如何操作?C++编程,C语言编程,…没问题,但我想在用户键入文本后识别单引号并将其更改为双引号?!所以我的ScalarFunction会自动将它们加倍。类似:插入表(…)值(dbo.scfFunc(text),…);如果文本有引号,它们将加倍,如果不是什么都不应该发生的话,scfFunc就是神奇发生的地方。你问如何插入一个文字字符串,你通过加倍来编码。如果您使用的是编程语言,那么您可以将该值读入一个变量,然后将该变量绑定到一个位置/名称(通常是?),而不用担心。通过向表中添加行,用户通常会键入“D'Artagnan”。但这是一个错误。什么不给一个错误是这样的:“D”“Artagnan”。我想做的是将(1)D'Artagnan更改为(2)'D'+CHAR(39)+'Artagnan',我现在的想法是使用一个函数“捕获”用户输入,检查输入(1),并在需要时返回(2)。但INSERT是检查的正确位置吗?这是“Microsoft SQL Server Management Studio 17”,用户使用“编辑顶部nnn行”编辑表格。请更新您的问题以显示代码的简化版本。这听起来像是典型的XY问题。艾伦已经告诉你需要做什么了。@JustMe。重复Allan已经说过的话:使用参数传递值。不要用文本值来填充查询字符串。引号只是您可能遇到的问题的一个示例。