2010-03-23 13 views
12

możliwe jest alias całej kolumny z prefiksem, w select? Mam grupę tabel w bazie danych Oracle, które muszę połączyć, a większość z nich ma te same nazwy kolumn. Chciałbym mieć coś takiegoalias całą kolumnę w zapytaniu z prefiksem

select MAGIC_ADD_PREFIX("PREFIX", *) from TABLE 

i mieć wynik podobny

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

ATM jedyne co mogę myśleć to coś chumsky podoba

select ID PREFIX_ID, FOO PREFIX_FOO, BAR PREFIX_BAR from TABLE 

ale jest brzydki jak cholera i podatne na błędy

==== Dalsze wyjaśnienie ====

Problem z

select TABLE.*,... 

jest to, że używam sterowników java + jdbc do pobierania kolumn, a java.sql.ResultSet metody (resultset.getInt("COLUMNNAME"), .getString("COLUMNNAME") ...) nie obsługuje składni „TABLENAME.COLUMNAME ".

jeśli mam (uproszczone, nie cheks błędach ...)

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

dostaję SQLException z nieprawidłową nazwę kolumny jako wiadomości

+0

dup: http://stackoverflow.com/questions/329931/sql-select-join-is-it-possible-to- prefix-all-columns-as-prefix – dforce

Odpowiedz

1

Można zrobić

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

albo może tworzyć widoki na tabelach podstawowych, takich jak

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

Można wygenerować SQL do tworzenia a_vw dość łatwo wybierając nazwę kolumny z kolumny user_tab_columns