2

Oracle dbにこのテーブルがあり、100以上の列で構成されています:

ID number PK, CREATEDON date, C0 varchar2, C1 varchar2, ... ,c100 varchar2
0, 2012-12-19 05:18:21, 0, 1, ... ,100

フォーマットされたものをすべて選択したかったCREATEDONので、次のクエリを書きました。

select *, to_char(CREATEDON, 'YYYY-MM-DD') from SOME_TABLE;

しかし、その後、エラーが発生しました: ORA-00923: FROM keyword not found where expected.

select ID, to_char(CREATEDON, 'YYYY-MM-DD'), col0, col1,...,col100すべてのクエリを書きたくなかったので、別のクエリを試してみました。

select a.*, to_char(b.CREATEDON, 'YYYY-MM-DD') from SOME_TABLE a
join SOME_TABLE b on (a.ID = B.ID);

SOME_TABLEそれはうまくいきましたが、この結合は行が増えるにつれてクエリ全体を遅くするべきでしょうか?

それで、それを行うより良い方法はありますか?

4

3 に答える 3

4

これは、Oracle 固有の問題のようです。*演算子のテーブルを指定してみてください。

select SOME_TABLE.*, to_char(CREATEDON, 'YYYY-MM-DD') from SOME_TABLE;

このフィドルも参照してください

于 2012-12-19T06:07:55.243 に答える
1

このようにしてみてください...

select a.*, to_char(CREATEDON, 'YYYY-MM-DD') from SOME_TABLE a;

于 2012-12-19T06:09:55.137 に答える
1

これはオラクル固有の問題です。問題は、一般的な*演算子を使用するときに、他の列を選択することを好まないことです。

だから提案

select x.*, to_char(CREATEDON, 'YYYY-MM-DD') from SOME_TABLE x;
于 2012-12-19T06:10:27.873 に答える