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

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

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

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

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

5 ответов


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


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';

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

например:

select t."size" from table t 

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

CREATE TABLE table AS ...

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


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

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