дата в качестве имени столбца - PullRequest
12 голосов
/ 21 октября 2011

У меня есть таблица с названием календари.

Один из его столбцов называется «дата»

Когда я хочу выбрать столбец даты, он выдает ошибку ORA-01747, а именно неверный table.column.

select date from calendars

Я полагаю, это происходит потому, что слово "date" является зарезервированным словом для pl / sql. Проблема в том, что даже невозможно изменить имя столбца:

alter table calendars rename column date to date_d

Результат: ошибка ORA-00904: неверный идентификатор.

Что вы посоветуете?

Спасибо.

Ответы [ 3 ]

17 голосов
/ 21 октября 2011

Вы пробовали

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

Если это не сработает или не поможет, вы попытались удалить столбец (и, возможно, попытаться сослаться на него с префиксом имени таблицы: calendars.date)?


Я также нашел этот пост: Как мне выбрать зарезервированное слово в Oracle?

Похоже, что Oracle будет чувствителен к регистру, если вы используете двойные кавычки, поэтому

select "date" from calendars;

не совпадает с

select "Date" from calendars;
9 голосов
/ 21 октября 2011

Попробуйте экранировать зарезервированное слово в двойных кавычках.

select "date" from calendars
1 голос
/ 30 июня 2012

date является зарезервированным ключевым словом и, следовательно, не может использоваться как

ВЫБРАТЬ дату из некоторой таблицы

может быть несколько решений проблемы

  • Столбец даты должен быть заключен в квадратные скобки, как

ВЫБРАТЬ [дата] ИЗ tableName

  • Заключить зарезервированное ключевое слово в кавычки

ВЫБЕРИТЕ «дату» из tableName

  • Использовать псевдоним

ВЫБРАТЬ tableName.date из tableName

...