Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 Server中失败,错误为未关闭引号_Sql_Sql Server_Insert_Quotation Marks - Fatal编程技术网

插入“;高尔夫球;在SQL Server中失败,错误为未关闭引号

插入“;高尔夫球;在SQL Server中失败,错误为未关闭引号,sql,sql-server,insert,quotation-marks,Sql,Sql Server,Insert,Quotation Marks,非常简单的table和insert语句,如果字符串为“Golf”,则会失败,但适用于任何其他字符串。 表创建: CREATE TABLE [dbo].[market] ( [marketID] [int] NOT NULL, [name] [varchar](50) NULL, CONSTRAINT [PK_market] PRIMARY KEY CLUSTERED ([marketID] ASC) ) 插入: INSERT [dbo].[market] ([marketID]

非常简单的table和insert语句,如果字符串为“Golf”,则会失败,但适用于任何其他字符串。 表创建:

CREATE TABLE [dbo].[market]
(
    [marketID] [int] NOT NULL,
    [name] [varchar](50) NULL,
CONSTRAINT [PK_market] PRIMARY KEY CLUSTERED ([marketID] ASC)
)
插入:

INSERT [dbo].[market] ([marketID], [name]) VALUES (4, N'Golf')

Error: Unclosed quotation mark after the character string ''. (State:37000, Native Code: 69)
Error: Incorrect syntax near ''. (State:37000, Native Code: 66)
Error: Unclosed quotation mark after the character string ')'.
现在,如果我将插入更改为:

INSERT [dbo].[market] ([marketID], [name]) VALUES (4, N'Test')

它很好用。以前有人见过吗?

我认为,如果在字符串中的任何位置发现GO,您正在使用的应用程序都必须被破坏并拆分成批

e、 g.它使用了一种幼稚的方法,如下所示

Regex.Split(sqlString, "GO", RegexOptions.IgnoreCase);
然后将结果作为单独的批执行

运行

INSERT [dbo].[market] ([marketID], [name]) VALUES (4, N'
返回您报告的前两个错误

消息105,第15级,状态1,第1行未关闭引号 字符串“”

Msg 102,15级,状态1,第1行不正确 “”附近的语法

执行

lf')
返回第三个

消息105,第15级,状态1,第1行未关闭引号 字符串“')”

暂时的解决办法可能是尝试

INSERT [dbo].[market] ([marketID], [name]) VALUES (4, N'G' + 'olf')

当然,应用程序确实需要修复。

在SQLFiddle上似乎工作得很好:您在哪个应用程序中运行这个?它会以任何方式改变查询吗?可能是对
GO
进行了狡猾的自制解析?我认为您选择了查询的一半,然后运行,那么它将给出错误,要么因为两条语句都相同,所以不可能给出错误。我能看到的唯一一件事是,您正在将Unicode字符串插入非Unicode列-
name
的类型为
varchar
,并且您插入了
N'Golf'