环境:Oracle 11g,plsql 14

目的:不使用*,查询拥有上百个字段的表的所有字段。

懒人大法:在文章末尾。

sql实现逻辑:

1、首先建一张100个字段以上的表,通过excel的方式将表建好后直接复制粘贴到plsql的建表界面。

利用excel快速建表

复制粘贴到PLSQL中,建表test1完成。

2、首先,我们需要获取TEST1表的字段及注释,通过Oracle中自带的表,user_tab_columns a和user_col_comments,这两张表中存储着这个账号下所有的表的字段名、字段顺序及注释。

select a.column_id xh, a.table_name, lower(a.column_name) dm, b.COMMENTS mc

from user_tab_columns a, user_col_comments b

where a.TABLE_NAME = 'TEST1'

AND a.TABLE_NAME = b.TABLE_NAME

and a.COLUMN_NAME = b.COLUMN_NAME

order by a.column_id

获取出字段顺序,表名,字段名及注释。

4、通过case when语句进行处理,如在第一行添加select,最后一行添加from及表名,其他行添加尾部逗号,同时,将字段及字段注释合并。

select case

when xh = '1' then

'select ' || dm || ', ' || '/*' || mc || '*/'

when xh = (select max(column_id)

from user_tab_columns aa

where aa.table_name = c.table_name) then

dm || ' ' || '/*' || mc || '*/' || 'from ' ||

c.table_name

else

dm || ', ' || '/*' || mc || '*/'

end val,

xh

from (select a.column_id xh,

a.table_name,

lower(a.column_name) dm,

b.COMMENTS mc

from user_tab_columns a, user_col_comments b

where a.TABLE_NAME = 'TEST1'

AND a.TABLE_NAME = b.TABLE_NAME

and a.COLUMN_NAME = b.COLUMN_NAME

order by a.column_id) c

对字段名及字段注释进行处理

5、最终处理。将各行利用listagg() within group (order by)函数进行合并处理。

select listagg(d.val, '') within group(order by xh) sql1

from (select case

when xh = '1' then

'select ' || dm || ', ' || '/*' || mc || '*/'

when xh = (select max(column_id)

from user_tab_columns aa

where aa.table_name = c.table_name) then

dm || ' ' || '/*' || mc || '*/' || 'from ' ||

c.table_name

else

dm || ', ' || '/*' || mc || '*/'

end val,

xh

from (select a.column_id xh,

a.table_name,

lower(a.column_name) dm,

b.COMMENTS mc

from user_tab_columns a, user_col_comments b

where a.TABLE_NAME = 'TEST1'

AND a.TABLE_NAME = b.TABLE_NAME

and a.COLUMN_NAME = b.COLUMN_NAME

order by a.column_id) c) d

6、将sql从查询结果复制粘贴到新的sql窗口,使用plsql美化器美化后即可得到单表多字段查询的sql了。

懒人大法:不用管如何实现的,直接把下列sql中的TEST1替换为你需要的表名即可查询。注意:如果表上没有注释,会造成注释处为/**/。

select listagg(d.val, '') within group(order by xh) sql1

from (select case

when xh = '1' then

'select ' || dm || ', ' || '/*' || mc || '*/'

when xh = (select max(column_id)

from user_tab_columns aa

where aa.table_name = c.table_name) then

dm || ' ' || '/*' || mc || '*/' || 'from ' ||

c.table_name

else

dm || ', ' || '/*' || mc || '*/'

end val,

xh

from (select a.column_id xh,

a.table_name,

lower(a.column_name) dm,

b.COMMENTS mc

from user_tab_columns a, user_col_comments b

where a.TABLE_NAME = 'TEST1'

AND a.TABLE_NAME = b.TABLE_NAME

and a.COLUMN_NAME = b.COLUMN_NAME

order by a.column_id) c) d

plsql视图添加表字段_Oracle-单表多字段查询(不使用*)相关推荐

  1. Excel 单表单列、单表多列、多表单列数据的条件去重罗列

    文章目录 前言 一.应用场景 二.核心内容 2.1.if() 2.2.countif() 2.3.row(),column() 2.4.text() 2.5.主函数 三.使用步骤 3.1.单表单列.单 ...

  2. mysql如何修改学生表_MySQL 详细单表增删改查crud语句

    MySQL 增删改查语句 1.创建练习表 这里练习表没有满足三范式 第一范式(又称 1NF):保证每列的原子性 数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性.满足第一范 ...

  3. 如何将分表汇总到总表_轻松实现多表汇总数据(多表汇总成单表)

    实际工作中经常需要将多个分表的数据汇总到总表,有简单的汇总,有复杂的汇总,表的结构不一样,汇总的方法也不相同,因此处理多表数据汇总的问题需要用户有针对性的对表格现状和需求进行分析,灵活采用Excel中 ...

  4. mysql单表操作_mysql单表操作

    mysql记录操作 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DEL ...

  5. 【NC65】主子表单据按照单表结构展现 节点客开

    需求描述: 需要将[采购入库]按照[采购订单关闭]节点的形式展现数据. 客开思路: 功能注册增加功能节点,(40080603)勾选启用. 菜单注册增加 菜单 并关联 功能节点(40080603). 初 ...

  6. 软件架构场景之—— 分表分库:单表数据量大读写缓慢如何解决?

    业务背景 一个电商系统的架构优化,该系统中包含用户和订单 2 个主要实体,每个实体涵盖数据量如下表所示 实体 数据量 增长趋势 用户 上千万 每日十万 订单 上亿 每日百万级速度增长,之后可能是千万级 ...

  7. mysql 主从单表_MySQL主从复制单表或者多表

    MySQL数据库安装不过多的介绍了:必须保证2个数据库的版本一致. 主数据库:192.168.0.43 从数据库:192.168.0.53 修改43主数据库的配置文件: 打开logbin日志生成文件: ...

  8. mysql单源多表同步单库单表_MySQL主从复制单表或者多表

    MySQL数据库安装不过多的介绍了:必须保证2个数据库的版本一致. 主数据库:192.168.0.43 从数据库:192.168.0.53 修改43主数据 MySQL数据库安装不过多的介绍了:必须保证 ...

  9. mysql导入创建表空间_oracle创建表空间 用户 数据库导入和导出(转)

    已经安装orcale 9i 和pl/sql(6.0) OracleJobSchedulerORCL.OracleOraDb10g_home1iSQL*Plus OracleOraDb10g_home1 ...

最新文章

  1. [Cocoa]为已有的XCode工程创建Git仓库
  2. 系列 《使用sklearn进行集成学习——理论》 《使用sklearn进行集成学习——实践》 目录 1 Random Forest和Gradient Tree Boosting参数详解 2 如何调参?
  3. boost::statechart模块实现触发事件测试
  4. 手把手教你捕获数据包
  5. erosa mysql_MySQL协议和canal实现
  6. GMTC 大前端时代前端监控的最佳实践 1
  7. 机器学习-西瓜书第一、二章
  8. NLP --- 文本分类(基于概率的隐语意分析(PLSA)详解)
  9. 【转】onAttachedToWindow()在整个Activity生命周期的位置及使用
  10. SD敢达服务器源码,SD敢达全机体代码.doc
  11. win10计算机磁盘图标,主编教你win10系统无法正常显示硬盘图标的方法
  12. Strategy策略模式详解与实例
  13. 计算机毕业设计JAVA家庭饮用水监测系统mybatis+源码+调试部署+系统+数据库+lw
  14. 经典算法之异或运算(无进位相加)
  15. system分区签名校验方法
  16. Quality-Estimation0 (翻译质量评价-使用 BERT 特征训练 QE 模型)
  17. 智力题:36匹马,6条跑道,没有计时器,至少需要多少次选出最快的三匹马
  18. 【附源码】计算机毕业设计JAVA罪犯信息管理系统
  19. android平板和手机的区别,平板和手机有什么区别?
  20. 你觉得一建难考吗?涉及的知识面多吗?

热门文章

  1. Node.js 入门详解(一)
  2. Vue3 --- 使用vue-element-admin
  3. 点读笔客户端_新手妈妈如何选购点读笔
  4. z变换判断稳定性和因果性_图像处理的仿射变换与透视变换
  5. linux硬盘为啥分区,Linux下为什么要进行磁盘的分区
  6. vs未能找到程序集platform.winmd_PP体育直播大连人VS恒大:新老8冠王首尾对决竟有十大看点...
  7. jq之$(“ul li:first-child“)
  8. BugkuCTF-MISC题虎符
  9. 周围剃光头顶留长发型_发型改变气质,这话放在石原里美身上也通用啊
  10. tensorflow 保存训练loss_tensorflow2.0保存和加载模型 (tensorflow2.0官方教程翻译)