исказите весь столбец в запросе с префиксом

возможно исказить весь столбец с префиксом в выборе? У меня есть группа таблиц в дб 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"));

Я получаю a SQLException с недопустимым именем столбца как сообщение

12
задан Vito De Tullio 24 March 2010 в 08:32
поделиться

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

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

2
ответ дан 3 December 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: