如何处理看起来像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]
这是两种方式来做到这一点:
- 使用反向报价如下:
从`FROM TableName中select““
- 你可以提到表名称:
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中不起作用