"дата" в качестве имени столбца

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

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

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

select date from calendars

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

alter table calendars rename column date to date_d

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

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

Спасибо.

Ответ 1

Вы пробовали

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;

Ответ 2

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

select "date" from calendars

Ответ 3

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

SELECT date из таблицы

могут быть несколько решений для задачи

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

SELECT [дата] FROM tableName

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

SELECT 'date' from tableName

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

SELECT tableName.date from tableName