我的一个专栏叫。我不能改名字,因为不是我做的。 我是否允许做一些像SELECT from TableName或有一个特殊的语法,以避免SQL Server混淆?


当前回答

以下是两种方法:

使用后面的引用如下:

从表名中选择“from”

你可以用表名提到:

SELECT TableName. FROM FROM TableName

其他回答

如果是在PostgreSQL中,在名字周围使用双引号,比如:

select "from" from "table";

注意:PostgreSQL内部自动将所有不带引号的命令和参数转换为小写。命令和标识符不区分大小写。sEleCt * from tAblE;解释为select * from table;。然而,双引号内的参数是原样使用的,因此是区分大小写的:select * from "table";and select * from "Table";从两个不同的表获取结果。

你可以像这样把你的列名放在括号里:

Select  [from] from < ur_tablename>

Or

放入一个临时表,然后随意使用。 例子:

Declare @temp_table table(temp_from varchar(max))

Insert into @temp_table
Select * from your_tablename

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

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

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

所以它会工作得很好。

你的问题似乎已经回答得很好了,但我想再补充一点。

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

更多信息:

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

and

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

嗨,我在完全符合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