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;
伙计们,我有一个包含 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;