INSERT INTO语句,保留字作为列名

时间:2014-04-24 15:55:39

标签: c# sql .net sql-server reserved-words

我有一张桌子(我没有创建它),我试图插入一个新行。其中一列名为DEC,这是SQL中的保留字。

我无法更改列名,因此我需要能够使用insert语句。不过,我有一些问题。我试过单引号,括号和反引号,但我无法摆脱

  

INSERT INTO语句中的语法错误。

我一直在接受(大概是因为我没有正确地逃避DEC)。

这是我现在得到的插入声明:

INSERT INTO spaceObjectTable (spaceObjectName, RA, DEC) 
VALUES (spaceObjectName, RA, [DEC]);

修改 现在使用这个insert语句:

INSERT INTO spaceObjectTable (spaceObjectName, RA, [DEC]) VALUES ('spaceObjectName', 'RA', 'DEC');

并收到此错误:Operation must use an updateable query.

2 个答案:

答案 0 :(得分:0)

如果启用了ANSI SQL模式,则可以使用双引号,否则可以使用专有的反向标记。 (在这个答案中介绍了各种键盘布局上的`字符的位置) 像这样:

INSERT INTO spaceObjectTable (spaceObjectName, RA, "DEC") ...

或:

INSERT INTO spaceObjectTable (spaceObjectName, RA, `DEC`) ...

答案 1 :(得分:0)

如果是SQL Server,它应该是

INSERT INTO spaceObjectTable 
(spaceObjectName, RA, [DEC]) 
VALUES 
('M-51', 13.5, 47.2);

假设M-51(RA和Declination是近似值)。

关于您当前的错误消息:您使用的是表格还是视图?你有这张桌子的权限吗?

编辑:GP告诉我们RA和DEC列的数据类型是字符串,所以

VALUES 
('M-51', '13h 29m 53s', '47deg 11.718min');

这是在问题的编辑形式中使用的,应该有用。