Как мне избежать зарезервированного слова в Oracle?

97

В TSQL я мог бы использовать что-то вроде Select [table] from tablename для выбора столбца с именем "table".

Как это сделать для зарезервированных слов в oracle?

Изменить: я пробовал квадратные скобки, двойные кавычки, одинарные кавычки и обратные кавычки, они не работают...

В качестве дополнительного пояснения у меня есть столбец, который кто-то назвал комментарием. Поскольку это зарезервированное слово oracle, он забрасывает шаткое, пытаясь выбрать с ним, его отказ при анализе запроса. Я попытался выбрать "комментарий" из tablename, но это не сработало. Я провешу дело и вернусь.

Теги:
reserved-words

5 ответов

141
Лучший ответ

В результате быстрого поиска Oracle, похоже, использует двойные кавычки (", например "table") и, по-видимому, требует правильного случая, где для любого, кого интересует, MySQL по умолчанию использует обратные ссылки ( `), за исключением случаев, когда для использования используются двойные кавычки.

  • 0
    Эй, я могу ошибаться, но может ли человек, который знал, что я был неправ, опубликовать правильный ответ?
  • 1
    Я отметил вас, потому что я пытался убрать слово, используя двойные кавычки, и это не сработало.
Показать ещё 10 комментариев
29

Oracle обычно требует двойных кавычек, чтобы разграничить имя идентификаторов в операторах SQL, например.

SELECT "MyColumn" AS "MyColAlias"
FROM "MyTable" AS "Alias"
WHERE "ThisCol" = 'That Value';

Однако он любезно позволяет исключить двойные кавычки, и в этом случае он спокойно преобразует идентификатор в верхний регистр:

SELECT MyColumn AS MyColAlias
FROM MyTable AS Alias
WHERE ThisCol = 'That Value';

внутренне преобразуется в нечто вроде:

SELECT "ALIAS" . "MYCOLUMN" AS "MYCOLALIAS"
FROM "THEUSER" . "MYTABLE" AS "ALIAS"
WHERE "ALIAS" . "THISCOL" = 'That Value';
3

Oracle использует двойные кавычки, но вам, скорее всего, нужно разместить имя объекта в верхнем регистре, например. "ТАБЛИЦА". По умолчанию, если вы создаете объект без двойных кавычек, например

CREATE TABLE table AS ...

Oracle создаст объект как верхний регистр. Однако ссылка не чувствительна к регистру, если вы не используете двойные кавычки!

2

двойные кавычки работали в oracle, когда у меня было ключевое слово как одно из имен столбца.

например:

select t."size" from table t 
-8

вам нужно переименовать столбец в другое имя, потому что TABLE зарезервировано Oracle.

Вы можете видеть все зарезервированные слова Oracle в представлении оракула V$RESERVED_WORDS.

  • 0
    Я получаю ORA-00942 когда пытаюсь select * from V$RESERVED_WORDS .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню