

我希望将sql数据批量复制到其他DB。但问题是,当我试图执行这个insert语句时。
它给我的错误就像
Msg 105, Level 15, State 1, Line 1
Unclosed quotation mark after the character string ''.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ''.我找到了N' '创建问题的解决方案。但是当我替换它的时候,它只是应付N'而已。所以怎样才能替换整个查询。行太多了,所以我不能手动对N''执行操作。
当试图复制它时,只需复制以下部分
INSERT [dbo].[HaveWantMaster]
([HaveWantMasterID],
[Type],
[Description],
[TotalAvailable],
[Status],
[Deleted],
[CreatedBy],
[CreatedOn],
[UpdatedBy],
[UpdatedOn])
VALUES (409,
0,
N'tap',
3,
N'发布于 2017-03-25 22:36:31
下面是一个简单的示例:PRINT 'THIS IS AMAZING
Msg 105,第15级,状态1,第1行后的字符串‘这是惊人’开封引号。 Msg 102,15级,State 1,行1不正确的语法在“这是惊人的”附近。
相反,正确关闭您的字符:PRINT 'THIS IS AMAZING'
ASCII字符的分隔符(')或CHAR(39)是Server中表示字符串的特殊字符。当解析器读取此字符时,它假设继续进行的字符,直到(')类型的下一个分隔符成为同一字符串的一部分。
PRINT ASCII(CHAR(39) + ' ' + CHAR(39))
PRINT ASCII(' ')划界者: 39空格: 32
解析器读取第一个语句与CHAR(39) + '‘+ CHAR(39)相同(因为'’和'‘表示每组单引号),因此优化器足够聪明地识别重复分隔符并返回特殊字符。
但是,在您的代码中,您未能向我们提供实际的代码,因此我们无法验证您的代码是否具有环境未显示的特殊字符。您可以从原始的文本/sql文件中复制粘贴“空格”,并检查像CL/RF字符这样的特殊字符。
SELECT ASCII('
')13
注CHAR(13)经常被误认为CHAR(10),前者相当于键盘上的enter键,尽管在这个示例中它们在查询中看起来实际上是一样的:
PRINT 'HOW ABOUT THIS' + CHAR(10) + 'BROWN COW' + CHAR(13) + 'HOLY MOLY'
--returns
HOW ABOUT THIS
BROWN COW
HOLY MOLY结论
例如
EXEC(' PRINT''MyPeople')将传递解析器,但实际上是读取。
PRINT'MyPeopleN'语法失败。(N)简单地告诉解析器它正在处理NVARCHAR字符。必须将所有分隔符括在Server中。发布于 2017-03-26 21:20:10
现在说到重点。Ascii 0 (zero) written to char(1) field。
由于null-terminated (ASCII 0),它开始产生错误。根据ID=47571
问题是,与C++中的字符串一样,Server中的字符串不是以空结尾的(ASCII 0)所以当您将单个字符字符串从C++写入Server时,您只得到第一个字符(实际上有两个字符;字符和终止符) --终止符实际上是被截断的。当您尝试编写“空白”字符串(实际上只包含终止符)时,不会发生任何冲突。所以你得到了终结者本身。
https://stackoverflow.com/questions/43020543
复制相似问题