Oracle SQL:如何删除以特定字符开头的列?

Oracle SQL: How to drop columns that start with certain characters?

伙计们,我有一个包含 300 多列的 table,其中不需要以“OP_...”开头的约 150 列。

是否可以编写这样的查询,

Select * from TableA
drop columns start with OP_

在甲骨文中 SQL/PL/SQL?感谢您的评论..

你可以尝试运行作为一个语句。执行此 select 以生成 alter table 语句,然后执行该语句:

select to_clob('alter tableA drop (') || to_clob(listagg(column_name,',') ||')')
from user_tab_columns 
where table_name = 'TABLEA'
and column_name like '%OP_%'

如果你想做单独的语句,那么你可以像这样执行一个 pl/sql 块:

begin
  for rec in (select 'alter tableA drop (' || column_name ||')' drop_stmt
              from user_tab_columns
              where table_name = 'TABLEA'
              and column_name like '%OP_%') LOOP
     execute immediate  rec.drop_stmt
   END LOOP;
END;