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

这是一个特定于 Oracle 的问题。问题是在使用通用*运算符时,他们不喜欢您选择任何其他列。

所以建议

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