我在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
中的行增加时,这种连接是否会减慢整个查询的速度?
那么,有更好的方法吗?
答案 0 :(得分:4)
这看起来像是特定于Oracle的问题。尝试为*
运算符指定表格:
select SOME_TABLE.*, to_char(CREATEDON, 'YYYY-MM-DD') from SOME_TABLE;
答案 1 :(得分:1)
试试这个......
select a.*, to_char(CREATEDON, 'YYYY-MM-DD') from SOME_TABLE a;
答案 2 :(得分:1)
这是一个特定的oracle问题。问题是当使用通用*
运算符时,他们不喜欢您选择任何其他列。
所以建议
select x.*, to_char(CREATEDON, 'YYYY-MM-DD') from SOME_TABLE x;