2010-03-23 78 views
12

在選擇中,可以使用前綴別名所有列嗎? 我在Oracle數據庫中有一組表,我需要將它們連接在一起,並且它們中的大多數具有相同的列名。我想有這樣的事情以前綴形式查詢中的所有列別名

select MAGIC_ADD_PREFIX("PREFIX", *) from TABLE 

,並有像

+---------+----------+----------+ 
|PREFIX_ID|PREFIX_FOO|PREFIX_BAR| 
+---------+----------+----------+ 
|...  |   |   | 

ATM結果我能想到的唯一的事情是什麼chumsky喜歡

select ID PREFIX_ID, FOO PREFIX_FOO, BAR PREFIX_BAR from TABLE 

但它是醜陋的地獄容易出錯

====詳細解釋====

select TABLE.*,... 

的問題是,我用java + JDBC驅動程序來檢索列,而java.sql.ResultSet方法(resultset.getInt("COLUMNNAME").getString("COLUMNNAME") ......)不支持的語法「TABLENAME.COLUMNAME 」。

如果我這樣做(簡化,沒有錯誤檢測開關...)

ResultSet rs = mkResultSet("select * from table_a, table_b"); 
rs.next(); 
System.out.println(rs.getInt("table_a.id")); 

我得到無效的列名SQLException的消息

+0

dup:http://stackoverflow.com/questions/329931/sql-select-join-is-it-possible-to-前綴全部列 - 作爲前綴 – dforce 2016-07-28 07:50:30

回答

1

你可以做

select a.*, b.* from table_a a, table_b b where..... 

或者你可以創建對基表的看法,如

create view a_vw as select a.col1 a_col1, a.col2 a_col2... 

您可以通過從user_tab_columns中選擇列名來相當容易地生成用於創建a_vw的SQL