oracle列合并的实现方法

很多场合我们都会用到oracle的列合并,oracle提供了如下一些方法用来实现列合并:

一、Oracle 10G以前使用WMSYS.WM_CONCAT:

wmsys.wm_concat将字段的值用","来隔开。

select id,wm_concat(name) from tab_name group by id;

二、使用sys_connect_by_path

sys_connect_by_path(字段名, 2个字段之间的连接符号),这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,',')。这个函数使用之前必须先建立一个树,否则无用。

三、Oracle 11G以后可以使用listagg

select listagg(id,',') within group (order by id) col_name from tab_name;

四、使用自定义函数:

create or replace function getRow(table1 varchar2 , ptdb1 varchar2) RETURN VARCHAR2 is
Result VARCHAR2(1000);
begin
FOR cur IN (SELECT audit_code FROM sys_audit_column t2 WHERE table1 =
t2.table_name and ptdb1 = t2.ptdb_name) LOOP
RESULT := RESULT||cur.audit_code||',';
END LOOP;
RESULT:=rtrim(RESULT,',');
return(Result);
end getRow;
(0)

相关推荐

  • oracle实现多行合并的方法

    本文实例讲述了oracle实现多行合并的方法.分享给大家供大家参考.具体分析如下: 在写sql时,经常会有将某列的字段合并起来,比如将某人名下每个月的工资列示,但是每个人只能占一行. 像这种场景,可能用行列转换也能实现,但如果这个月份的信息不固定,就无法使用行列转换了. oracle10g以后,提供了一个函数WMSYS.WM_CONCAT,能很轻松实现该功能. 复制代码 代码如下: select t.rank, WMSYS.WM_CONCAT(t.Name) TIME From t_menu_i

  • Oracle 多行记录合并/连接/聚合字符串的几种方法

    什么是合并多行字符串(连接字符串)呢,例如: SQL> desc test; Name Type Nullable Default Comments ------- ------------ -------- ------- -------- COUNTRY VARCHAR2(20) Y CITY VARCHAR2(20) Y SQL> select * from test; COUNTRY CITY -------------------- -------------------- 中国 台

  • oracle合并列的函数wm_concat的使用详解

    oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle wm_concat(column)函数实现字段合并,如果您对oracle wm_concat(column)函数使用方面感兴趣的话,不妨一看.shopping:-----------------------------------------u_id       goods            num------------------------------------------1  

  • 修改oracle数据库用户名及密码的方法

    改oracle数据库用户名称和密码(Linux为例),有需要的朋友可以参考下. 一.修改前准备工作: 使用ssh工具以root身份连接服务器, 然后切换到oracle用户:su - oracle(回车) 使用sqlplus连接数据库:sqlplus /nolog(回车) 以管理员身份登录sys用户:conn sys/sys as sysdba(回车) 数据库连接成功,至此准备工作完成. 二.修改用户名称. 数据库连接成功后,在SQL>提示后面继续输入: 首先查到到所需修改用户名称的用户需要:se

  • oracle—SQL技巧之(二)WMSYS.WM_CONCAT函数实现多行记录用逗号拼接在一起

    需求: 目前接触BI系统,由于业务系统的交易记录有很多,常常有些主管需要看到所有的记录情况,但是又不想滚动,想一眼就可以看到所有的,于是就想到了字符串拼接的形式. 解决方案:使用Oracle自带的函数 WMSYS.WM_CONCAT,进行拼接. 函数限制:它的输出不能超过4000个字节. 为了不让SQL出错,又可以满足业务的需求,超过4000个字节的部分,使用"..." 实现SQL如下: 复制代码 代码如下: CREATE TABLE TMP_PRODUCT (PRODUCT_TYPE

  • php连接oracle数据库及查询数据的方法

    本文实例讲述了php连接oracle数据库及查询数据的方法.分享给大家供大家参考.具体分析如下: php有强大的功能不但可以支持mysql,mssql,mysqli之个我们还可以与oracle数据连接,要让php支持oracle非常的简单我们只要把php.ini中的;extention = php_oci8.dll分号去掉即可. php支持oracle连接函数 php.ini文件中的配置,去掉 ;extention = php_oci8.dll,去掉前面的分号,重启apache就可以了,如果不行

  • C#实现远程连接ORACLE数据库的方法

    本文实例讲述了C#实现远程连接ORACLE数据库的方法.分享给大家供大家参考.具体分析如下: 使用该方法,只需要传入几个必要的参数就可以进行数据库的远程连接测试了,连接成功返回TRUE,失败返回false. 参数说明: 第一个参数表示你在数据库中的用户,具有可以登录权限的 第二个参数表示用户的密码,没有加密 第三个参数表示登录的服务器的地址 第四个参数表示登录的服务器的端口号 第五个参数表示登录的数据库的名字 一定记得必要的引用 复制代码 代码如下: /// <summary> /// 测试数

  • oracle ORA-00988 missing or invalid password 错误

    在设置数据库实例的密码时,注意不要以数字开头,否则您将会遇到 ORA-00988 missing or invalid password (口令缺失或无效) 错误. Oracle 10g 安装完成后,您可使用 dbca 命令创建新的数据库实例,或维护已有的数据库实例. 如果您安装的是 Oracle XE 数据库,则必须反安装 Oracle XE 后重新安装 Oracle XE,并在安装过程中指定非数字开头的密码 (例如 password 或 pswd123). ORA-00988: 口令缺失或无

  • C#调用Oracle存储过程的方法

    本文实例讲述了C#调用Oracle存储过程的方法.分享给大家供大家参考.具体实现方法如下: Oracle数据库代码如下: 复制代码 代码如下: create or replace procedure proce_test(paramin in varchar2,paramout out varchar2,paraminout in out varchar2) as   varparam varchar2(28); begin   varparam:=paramin;   paramout:=va

  • oracle 合并查询 事务 sql函数小知识学习

    表查询: 合并查询:使用union关键字,可将满足条件的重复行去掉. 复制代码 代码如下: select ename,sal,job from emp where sal > 2500 union select ename,sal,job from emp where job = 'MANAGER'; 而union all用法和union相似,但是不会取消重复行. intersect 用来取两个结果的交集. minus用来取两个结果的差集. 使员工scott的岗位,工资,补助与SMITH员工一样

随机推荐