Как мне избежать зарезервированного слова в Oracle? - PullRequest
118 голосов
/ 22 июля 2009

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

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

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

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

Ответы [ 5 ]

171 голосов
/ 22 июля 2009

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

31 голосов
/ 22 июля 2009

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

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

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

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

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

SELECT "ALIAS" . "MYCOLUMN" AS "MYCOLALIAS"
FROM "THEUSER" . "MYTABLE" "ALIAS"
WHERE "ALIAS" . "THISCOL" = 'That Value';
7 голосов
/ 30 марта 2017

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

например:

select t."size" from table t 
3 голосов
/ 22 июля 2009

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

CREATE TABLE table AS ...

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

0 голосов
/ 05 декабря 2013

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...