web-dev-qa-db-ja.com

Oracleで予約語をエスケープするにはどうすればよいですか?

TSQLでは、Select [table] from tablenameなどを使用して、「table」という名前の列を選択できます。

Oracleの予約語に対してこれを行うにはどうすればよいですか?

編集:角括弧、二重引用符、一重引用符、および逆引用符を試してみましたが、機能しません...

さらなる説明として、誰かがコメントと名付けたコラムがあります。これは予約語であるため、Oracleはクエリを解析するときに失敗するため、それを選択しようとするとぐちゃぐちゃになります。テーブル名から「コメント」を選択しようとしましたが、うまくいきませんでした。ケースを確認して戻ってきます。

120
Spence

クイック検索から、Oracleは二重引用符("、例えば"table")を使用しているように見えますそして明らかに大文字と小文字を区別する必要があります — ( `)互換性のために二重引用符を使用するように設定されている場合を除きます。

173
eyelidlessness

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';
32
Jeffrey Kemp

列名の1つとしてキーワードがあると、Oracleで二重引用符が機能しました。

例えば:

select t."size" from table t 
8
Suresh G

Oracleは二重引用符を使用しますが、ほとんどの場合、オブジェクト名を大文字にする必要があります。 "テーブル"。デフォルトでは、二重引用符なしでオブジェクトを作成する場合、例えば.

CREATE TABLE table AS ...

Oracleは、オブジェクトを大文字として作成します。ただし、二重引用符を使用しない限り、参照では大文字と小文字は区別されません!