oracle查询实现列隐藏

aitcainiao 2017-05-16 04:45:57
大神们,oracle查询的时候,如果字段有80列,但是只需要查其中的七十五列,又不想把这七十五列,一列一列的写,有没有什么好的办法?
...全文
1113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 6 楼 qq_38532397 的回复:
[quote=引用 2楼稳健老实人 的回复:]select (select column_name from dba_tab_columns where table_name=t1 and column_name not in(你不要的字段)) from t1 改成动态SQL 就可以了
单行子查询返回多个行[/quote] 试下这个

DECLARE
V_SQL VARCHAR(200);
BEGIN
SELECT LISTAGG(COLUMN_NAME,',') WITHIN GROUP (ORDER BY COLUMN_ID)  INTO V_SQL FROM DBA_TAB_COLUMNS WHERE TABLE_NAME='T2' AND COLUMN_NAME NOT IN('NAME');
V_SQL:='SELECT '|| V_SQL || ' FROM  T2 ';
DBMS_OUTPUT.PUT_LINE(V_SQL);
--EXECUTE IMMEDIATE V_SQL;
END;

太和վ'ᴗ' ի 2017-12-05
  • 打赏
  • 举报
回复
用的plsql么,很简单,把该表下字段的文件夹拖到sql里就OK,结帖吧。
aitcainiao 2017-05-17
  • 打赏
  • 举报
回复
引用 2楼稳健老实人 的回复:
select (select column_name from dba_tab_columns where table_name=t1 and column_name not in(你不要的字段)) from t1 改成动态SQL 就可以了
单行子查询返回多个行
aitcainiao 2017-05-17
  • 打赏
  • 举报
回复
引用 4楼卖水果的net 的回复:
[quote=引用 3 楼 jdsnhan 的回复:] select wm_concat(column_name) from user_tab_cols where table_name='A1' 把字段拼出来,然后删掉你不要的。 如果这个查询用的很频繁,用1楼的方法,创建对应的视图
说白了,他这就是懒;[/quote]七十多一个一个的写好烦啊
卖水果的net 2017-05-17
  • 打赏
  • 举报
回复
引用 3 楼 jdsnhan 的回复:
select wm_concat(column_name) from user_tab_cols where table_name='A1' 把字段拼出来,然后删掉你不要的。 如果这个查询用的很频繁,用1楼的方法,创建对应的视图
说白了,他这就是懒;
jdsnhan 2017-05-17
  • 打赏
  • 举报
回复
select wm_concat(column_name) from user_tab_cols where table_name='A1' 把字段拼出来,然后删掉你不要的。 如果这个查询用的很频繁,用1楼的方法,创建对应的视图
  • 打赏
  • 举报
回复
select (select column_name from dba_tab_columns where table_name=t1 and column_name not in(你不要的字段)) from t1 改成动态SQL 就可以了
卖水果的net 2017-05-16
  • 打赏
  • 举报
回复
把这 75 列写到视图,下次就直接 select * from v

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧