Как избежать зарезервированного слова в 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
.