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


当前回答

当你这样做的时候,把它别名为其他东西(或者更好的是,使用一个视图或SP并弃用旧的直接访问方法)。

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

其他回答

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

将列名像这样用括号括起来,from变成[from]。

select [from] from table;

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

select table.[from] 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)。

我在尝试更新名称为关键字的列时遇到了同样的问题。上面的解决方案对我没有帮助。我通过简单地指定表的名称来解决它,就像这样:

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

在Apache Drill中,使用反引号:

select `from` from table;