web-dev-qa-db-ja.com

列名としての「日付」

カレンダーというテーブルがあります。

その列の1つは「日付」という名前です

日付列を選択したい場合、エラーORA-01747、つまり無効なtable.columnが表示されます。

select date from calendars

'date'はpl/sqlの予約語であるため、これが発生すると思います。問題は、列名を変更することさえできないことです:

alter table calendars rename column date to date_d

結果は次のとおりです。ORA-00904エラー:識別子が無効です。

何をアドバイスしますか?

ありがとう。

12
bonsvr

やってみました

select calendars.date from calendars; /* or you could alias "calendars" if you don't want to type so much */

それでも問題が解決しない場合は、列を削除してみましたか(そして、テーブル名のプレフィックスで列を参照してみてください:calendars.date)?


私もこの投稿を見つけました: Oracleで予約語をエスケープするにはどうすればよいですか?

二重引用符を使用すると、Oracleでは大文字と小文字が区別されるようです。

select "date" from calendars;

と同じではありません

select "Date" from calendars;

予約語を二重引用符で囲んでエスケープしてみてください。

select "date" from calendars
9
Joe Stefanelli

日付は予約済みのキーワードであるため、次のように使用することはできません

いくつかのテーブルから日付を選択します

問題には複数の解決策があります

  • 日付列は、次のように角かっこで囲む必要があります。

SELECT [日付] FROM tableName

  • 予約済みのキーワードをバッククォートで囲みます

TableNameから 'date'を選択します

  • エイリアスを使用する

TableNameからtableName.dateを選択します

1
Ankit Suhail