Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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
sql将值插入到特定列中_Sql_Sql Server_Insert_Sql Server 2008 R2 - Fatal编程技术网

sql将值插入到特定列中

sql将值插入到特定列中,sql,sql-server,insert,sql-server-2008-r2,Sql,Sql Server,Insert,Sql Server 2008 R2,我试图将nvarchar值插入表中的特定列中。该值可能具有保留字和单引号字符(如在“不”中) 我得到的是: set @myString= REPLACE(@myString, '''', ''''''); set @ExecStatement = 'INSERT INTO #TempTable('+@ColumnName+') VALUES('''+@myString+''')'; exec (@ExecStatement) 这适用于绝大多数项目,但我收到以下错误消息: 味精105,第15级,

我试图将
nvarchar
值插入表中的特定列中。该值可能具有保留字和单引号字符(如在“不”中)

我得到的是:

set @myString= REPLACE(@myString, '''', '''''');
set @ExecStatement = 'INSERT INTO #TempTable('+@ColumnName+') VALUES('''+@myString+''')';
exec (@ExecStatement)
这适用于绝大多数项目,但我收到以下错误消息:

味精105,第15级,状态1,第1行
字符串“我们不明白,请重新发送或键入HE”后未关闭的引号。
味精102,第15级,状态1,第1行
“我们不明白,请重新发送或键入HE”附近的语法不正确

我实际上错过了应该在那里的文本的剩余部分。应该是
“我们不明白,请重新发送,或者键入帮助,有人会与您联系”


任何帮助都将不胜感激。

使用方括号可能有助于:

set @myString= REPLACE(@myString, '''', '''''');
set @ExecStatement = 'INSERT INTO #TempTable(['+@ColumnName+']) VALUES('''+@myString+''')';
exec (@ExecStatement)

根据您的输出字符串为的注释:

INSERT INTO #TempTable(Col1) VALUES('We didn''t understand, please resend, or type HELP and someone will contact you.')
您需要转义字符串周围的引号,并将实际应为引号的引号增加四倍。。。差不多

INSERT INTO #TempTable(Col1) VALUES(''We didn''''t understand, please resend, or type HELP and someone will contact you.'')

您应该从输入中转义单引号。因为您正确地转义了字符串,所以它应该可以工作。表上是否有使用动态SQL的触发器?能否在
exec(@ExecStatement)
之前执行
SELECT@ExecStatement
,并向我们显示结果是什么?也许问题在于字符串的长度。你能展示一下
declare
语句吗。@Tom这里是选择结果:
INSERT-INTO#tentable(Col1)值('我们不理解,请重新发送,或者键入帮助,有人会联系你。')
列名不是我遇到的问题,是
@myString
给了我问题。@shadonar。不知何故,你可能知道这一点。然而,我们没有。如果您对问题进行编辑,在变量替换后包含
@ExecStatement
的值,这将非常有用。或者至少是
@ColumnName
的值。可以尝试值(“N”的意思是
设置@myString=REPLACE(@myString,'','');
实际上是
设置@myString=REPLACE(@myString,'','')
?保持
@myString
上的
REPLACE
不变,但是在
@ExecStatement
上做同样的事情,所以在
@ExecStatement
上做
REPLACE
做了一些有趣的事情,所以我只做了
设置@myString=REPLACE(@myString,“,”,“,”)
,解决了这个问题。