псевдоним всех столбцов в запросе с префиксом - PullRequest
12 голосов
/ 23 марта 2010

можно ли псевдонимы для всех столбцов с префиксом, в select? У меня есть группа таблиц в базе данных Oracle, которые мне нужно объединить, и большинство из них имеют одинаковые имена столбцов. Я хотел бы иметь что-то вроде

select MAGIC_ADD_PREFIX("PREFIX", *) from TABLE

и иметь результат как

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

Банкомат, единственное, что я могу думать, это что-то чумское, как

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 с недопустимым именем столбца в качестве сообщения

1 Ответ

2 голосов
/ 24 марта 2010

Вы можете сделать

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...

Вы можете сгенерировать SQL для создания a_vw довольно легко, выбрав имя столбца из user_tab_columns

...