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

环境:Oracle 11g,plsql 14

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

懒人大法:在文章末尾。

sql实现逻辑:

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

a4587e6be4f4fcdc56c37b33ab94b441.png

利用excel快速建表

95474469323cd9105c439b57fa497633.png

复制粘贴到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

cfbe5313187a204feabe9228abfb7562.png

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

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

5b20167f77fe3c6be103921a7dec78c3.png

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

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

b07f831ef5503f41546d1e372dd40238.png

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

b768f892b5f4fc7b1049d1db685daf83.png

懒人大法:不用管如何实现的,直接把下列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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lableimg闪退_CV学习笔记(二十五):数据集标注与制作

最近在做一些数据标注的工作,虽然标注数据比较枯燥,但这也是每个做算法的工程师升级打怪的必由之路。使用一些合适的工具往往可以事半功倍,效率UP。一:数据标注流程二:数据处理的一些小代码1:重命名当得到这…

java线程堆栈_深入JVM剖析Java的线程堆栈

在这篇文章里我将教会你如何分析JVM的线程堆栈以及如何从堆栈信息中找出问题的根因。在我看来线程堆栈分析技术是Java EE产品支持工程师所必须掌握的一门技术。在线程堆栈中存储的信息,通常远超出你的想象,我们可以在工作中善加利用这些信息。我的目标是…

java文件 linux_Linux执行Java文件

最近学习shell脚本,写个简单java类让linux去执行java类没别的东西,就引了一个fastjson的jar,写了个main方法 序列化一个User对象 打印package com.lws.demo;import java.util.Date;import com.alibaba.fastjson.JSONObject;import com.lws.mo…

java 刽子手游戏_java基础(九):容器

集合的引入List (ArrayList LinkedList)Set (HashSet LinkedHashSet TreeSet )Map (HashMap LinkedHashMap TreeMap)CollectionsIterator使用泛型1.为什么使用集合而不是数组?集合和数组相似点都可以存储多个对象,对外作为一个整体存在数组的缺点长度必须…

java异常处理方式推荐做法_谈谈Java异常处理这件事儿

此文已由作者谢蕾授权网易云社区发布。欢迎访问网易云社区,了解更多网易技术产品运营经验。前言我们对于“异常处理”这个词并不陌生,众多框架和库在异常处理方面都提供了便利,但是对于何种处理才是最佳实践,也是众说纷纭。异常处…

java 抽象类 final_final/抽象类/interface

lesson Thirteen                          2018-05-10 02:10:43final:最终的,可以修饰类、属性、方法1.final修饰类:这个类就不能被继承,如:String类,StringBuffer类,System类1…

java io中断_JDK源码阅读:InterruptibleChannel 与可中断 IO

来源:木杉的博客 ,imushan.com/2018/08/01/java/language/JDK源码阅读-InterruptibleChannel与可中断IO/Java传统IO是不支持中断的,所以如果代码在read/write等操作阻塞的话,是无法被中断的。这就无法和Thead的interrupt模型配合使…

java值栈_Struts2学习笔记-Value Stack(值栈)和OGNL表达式

只是本人的Struts2学习笔记,关于Value Stack(值栈)和OGNL表达式,把我知道的都说出来,希望对大家有用。一,值栈的作用记录处理当前请求的action的数据。二,小例子有两个action:Action1和Action2Action1有两个…

php 接口日志,PHP 开发 APP 接口--错误日志接口

APP 上线以后可能遇到的问题:① APP 强退② 数据加载失败③ APP 潜在问题错误日志需要记录的内容数据表 error_log 字段:idapp_id:app 类别 iddid:客户端设备号version_id:版本号version_mini:小版本号erro…

php cannot call constructor,安装ECshop普遍问题的解决方法

安装时的问题:1.Strict Standards: Non-static method cls_image::gd_version() should not be called statically in /usr/local/httpd2/htdocs/upload/install/includes/lib_installer.php on line 31解决:找到install/includes/lib_installer.php中的…

zblog php和asp功能,ZBlog是否适合PHP或ASP?我们该如何选择?

我最近玩了zblog一段时间,对于大多数第一次联系zblog的博客,他们会问zblog是否适合PHP或ASP?我们该如何选择?事实上,我真的不明白这个问题。我个人更喜欢PHP。今天我将整理出来并对PHP版本和ASP版本进行比较&#xff0…

php决策管理,报表管理与数据分析:为系统未来发展规划提供决策依据,有效避免IT管理与投资的盲目??...

据了解,很多中大型企事业单位的IT基础结构具有复杂、分散等特征,并且信息化程度越高,数据类型越繁杂,数据量也越庞大。许多单位不得不付出极大的人力、物力对网络进行管理。而一个单位的信息化的程度和IT部门的服务水平&#xff0…

设置linux拨号服务端,CentOS Linux上搭建PPPoE服务器及拨号设置

CentOS下PPPoE拨号设置1.查看并安装拨号软件:[rootRedHat ~]# rpm -qa|grep pppoe[rootredhat ~]# yum -y install rp-pppoerp-pppoe.i686 0:3.10-8.el62.查看adsl-setup命令所在位置:[rootredhat ~]#whereis adsl-setupadsl-setup:或者直接搜索pppoe信息…

linux上pyenv卸载,在Ubuntu 18.04系统下安装pyenv的方法

本文介绍在Ubuntu 18.04操作系统下安装pyenv的方法,使用它可以进行Python多版本管理,目的是防止不同的Python版本因为不兼容而出现错误。安装pyenv其实非常的简单,只需要在系统终端中运行一条命令即可,以下是操作方法,…

linux防火墙作用是什么,Linux防火墙操作1

什么是防火墙防火墙可通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现网络的安全保护。简单来讲 就是防止外界通过网络攻击Linux服务器的一个软件本次学习目标:防火墙的启停&#xff0…

lede 自定义linux,OpenWrt 和 LEDE 宣布正式合并

OpenWrt 和 LEDE 项目已在官网正式宣布合并,合并后的项目仍用 OpenWRT 命名。合并后的 OpenWrt 项目将按照 LEDE 制定的规范进行管理。原有的 LEDE 和 OpenWrt 项目的活跃成员将继续在合并后的 OpenWrt 上工作。LEDE 项目是 OpenWrt 的一个衍生项目,曾被…

旧衣回收小程序搭建有什么优势?

今年以来,旧衣回收行业分外火热,不断有创业者进入到市场中,其中不乏有年轻人,足以可见行业的火爆。 我国是人口大国,每个人闲置的衣物加在一起的数量难以计算,旧衣回收行业具有巨大的发展空间。 此外&…

c语言程序兔子反之问题,C语言解决兔子产子问题代码及解析

有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?问题分析兔子数的规律,如下表所示:月数小兔子对数中…

c语言fork()创建线程,操作系统的创建原语是fork()还是creat()?

满意答案MythSwift2013.09.10采纳率:55% 等级:12已帮助:9461人一个进程就相当于一个主线程。fork一个进程与create一个线程的区别:fork进程:子进程复制父进程的进程环境。父进程结束不会影响子进程的运行。进程切换复制进程环境。create线…

android 最新 support,android support v7 下载-android support.v7包 官方最新版 - 河东下载站...

android support v7是一款功能非常实用的android在进行开发的过程中,必须要进行使用的一个包;这款软件作为一个功能非常全面的功能包,也是目前为止最新的功能包,是您这使用Android开发的时候,非常重要的一环&#xff1…