如何处理看起来像SQL关键字的SQL列名称?

我的一个专栏被称为。 我不能改变这个名字,因为我没有做到。 我是否允许SELECT from FROM TableName做一些SELECT from FROM TableName还是有特殊的语法来避免SQL Server的混淆?

将括号中的列名称括起来,从而变成[from]。

 select [from] from table; 

也可以使用以下(查询多个表时很有用):

 select table.[from] from table; 

当你这样做的时候 – 把它别名(或者更好一些,使用一个视图或一个SP,并且废弃旧的直接访问方法)。

 SELECT [from] AS TransferFrom -- Or something else more suitable FROM TableName 

如果它在PostgreSQL中,则在名称周围使用双引号,如:

 select "from" from "table"; 

注意:PostgreSQL内部会自动将所有未加引号的命令和参数转换为小写。 这具有命令和标识符不区分大小写的效果。 来自tAblE的电话* 被解释为select * from table; 。 但是,双引号内的参数按原样使用,因此区分大小写: select * from“table”;从“表”中select*; 从两个不同的表中得到结果。

你的问题似乎在这里得到了很好的回答,但是我只想为这个主题增加一个评论。

那些devise数据库的人应该清楚保留的关键字,并避免使用它们。 如果你发现有人在使用它,告诉他们(礼貌的方式)。 这里的关键字是保留字。

更多信息:

“保留关键字不应该用作对象名称,从早期版本的SQL Server升级的数据库可能包含标识符,包括在早期版本中未保留的字,但是是当前版本SQL Server的保留字。对象通过使用分隔标识符直到名称可以被改变。“ http://msdn.microsoft.com/en-us/library/ms176027.aspx

“如果您的数据库确实包含与保留关键字匹配的名称,则在引用这些对象时必须使用分隔标识符。有关更多信息,请参阅标识符(DMX)。 http://msdn.microsoft.com/en-us/library/ms132178.aspx

如果您正在使用SQL Server,则只需简单地将方括号包围在列或表名称的周围即可。

 select [select] from [table] 

这是两种方式来做到这一点:

  1. 使用反向报价如下:

从`FROM TableName中select““

  1. 你可以提到表名称:

SELECT TableName.from FROM TableName

我也遇到过这个问题。 解决方法是在查询中将[Column_Name]这样放入。

 string query= "Select [Name],[Email] from Person"; 

所以它会工作得很好。

在Apache Drill中,使用反引号:

 select `from` from table; 

您好,我在完全符合ANSI标准的Teradata系统上工作。 使用双引号“”来命名这样的列。

例如, type是一个SQL保留关键字,在引号中使用时, type被视为用户指定的名称。

看下面的代码示例:

 CREATE TABLE alpha1 AS ( SEL product1 type_of_product AS "type" FROM beta1 ) WITH DATA PRIMARY INDEX (product1) --type is a SQL reserved keyword TYPE --see? now to retrieve the column you would use: SEL "type" FROM alpha1 

你可以把你的列名称括起来,如:

 Select [from] from < ur_tablename> 

要么

放在临时表中,然后使用你喜欢的。
例:

 Declare @temp_table table(temp_from varchar(max)) Insert into @temp_table Select * from your_tablename 

在这里,我只假设your_tablename只包含一列(即from)。

在尝试更新名称是关键字的列时,我遇到了同样的问题。 上面的解决scheme并没有帮助我。 我通过简单地指定表的名字来解决这个问题:

 UPDATE `survey` SET survey.values='yes,no' WHERE (question='Did you agree?') 

以下将很好地工作:

 SELECT DISTINCT table.from AS a FROM table 

在MySQL中,或者使用反引号(`),可以使用UI来更改列名称。 右键单击表格>更改表格>编辑包含sql关键字>提交的列名称。

 select [from] from <table> 

作为一个说明,以上在MySQL中不起作用