“date”作为列名

时间:2011-10-20 21:06:04

标签: database oracle database-design ora-00904 ora-01747

我有一张名为日历的表。

其中一个列名为“date”

当我想选择日期列时,它会给出错误ORA-01747,即无效的table.column。

select date from calendars

我想这是因为'date'是pl / sql的保留字。问题是甚至无法更改列名称:

alter table calendars rename column date to date_d

结果是:ORA-00904错误:标识符无效。

你有什么建议?

感谢。

3 个答案:

答案 0 :(得分:17)

你试过吗

select calendars.date from calendars; /* or you could alias "calendars" if you don't want to type so much */

如果这不起作用或帮助,您是否尝试删除该列(并且可能尝试使用表名前缀:calendars.date引用它)?


我还发现了这篇文章:How do I escape a reserved word in Oracle?

如果你使用双引号,那么Oracle似乎是区分大小写的

select "date" from calendars;

不同
select "Date" from calendars;

答案 1 :(得分:9)

尝试使用双引号转义保留字。

select "date" from calendars

答案 2 :(得分:1)

date是保留关键字,因此不能像

一样使用

从某些表中选择日期

可以有多种问题的解决方案

  • 日期列需要括在括号内,如
  

SELECT [date] FROM tableName

  • 将后备关键字包含在反引号中
  

从tableName中选择'date'

  • 使用别名
  

从tableName

中选择tableName.date