插入“;高尔夫球;在SQL Server中失败,错误为未关闭引号
非常简单的table和insert语句,如果字符串为“Golf”,则会失败,但适用于任何其他字符串。 表创建:插入“;高尔夫球;在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]
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'