`
ronon
  • 浏览: 192810 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

Oracle 关于oracle自带的行转列函数

 
阅读更多

前言:

环境是java+hibernate+oracle11g

目标是将某表中根据id分组后将name字段的值拼接到一列中,且用“,“进行分割

 

试过用 wm_concat() 结合 group by , 在pl/sql中执行正常,

但是在java程序运行时会报: ORA-22922:不存在的 LOB 值

 

1.没用hql查询,用的纯sql

2.也将字段转换为varchar类型了: cast(wm_concat(name) as varchar2(2000))

 

很头疼,网上说可能是hibernate的原因,

后来找了可以替代wm_concat()的方法 listagg(name, ',')

语法如下:

listagg(name, ',')  within  group(order by id)

 

应该很好理解:listagg方法的第一个参数是需要进行拼接的字段,第二个参数是字段分隔符,

within 和 order by 是必须的, order by决定了拼接后的各name值的展示顺序

注意,不要忘了group by 

例如 表 tmp

id  name

1   a

2   b

3   c

2   d

2   c

3   x

sql语句这样写:

 

select id,listagg(name, ',')  within  group(order by name) from tmp

group by id
 

 

结果为:

1   a

2   b,c,d

3   c,x

 

如果将order by name 改为 order by name desc

结果应该为:

1   a

2   d,c,b

3   x,c

当然,也可以order  by 其他字段。根据需要来。

以上例子已经过人工测试,保证可用。

ok,收工回家。

 

 

 

分享到:
评论

相关推荐

    Oracle的110个自带函数总结归纳

    以下是对"Oracle的110个自带函数总结归纳"中可能涵盖的关键知识点的详细解释: 1. 数学函数: - ABS():返回绝对值。 - CEIL()和FLOOR():分别向上和向下取整。 - ROUND():四舍五入到指定的小数位数。 - MOD()...

    Oracle MD5函数

    Oracle数据库系统中内置了MD5函数,这是一种广泛使用的哈希函数,用于生成固定长度的数字摘要,通常用于数据完整性校验和密码存储。MD5全称为Message-Digest Algorithm 5,由Ron Rivest在1991年设计,尽管它在安全性...

    oracle中将小写金额转换为大写金额函数

    ### Oracle中将小写金额转换为大写金额的函数实现 在Oracle数据库中,有时我们需要将数字金额转换成中文大写形式,特别是在财务系统中,这样的功能非常实用且常见。本文将详细介绍一个自定义的Oracle函数`money_to_...

    Oracle函数文档

    Oracle函数文档是一个包含Oracle数据库系统中常用函数和API的资源集合,主要以CHM(Microsoft Compiled HTML Help)格式提供。这种格式的文档通常便于离线查阅,内容组织有序且易于搜索。下面将详细介绍这两个CHM...

    oracle 数字金额转为汉字大写

    在Oracle SQL中,没有内置的函数可以直接将数字转换为汉字大写的金额。因此,我们需要编写自定义的函数来完成这个任务。这里提供一个名为`num2rmb`的函数示例,这个函数通常会包含在`num2rmb.sql`文件中。 `num2rmb...

    关于oracle自带的表

    ### Oracle 自带表知识点概述 #### 一、Oracle 自带表简介 Oracle 数据库系统包含了一些预定义的表,这些表通常被称作“Oracle 自带表”。它们主要用于数据库管理和测试场景,帮助用户理解 SQL 查询的基本操作。在...

    oracle自带的人力资源数据库设计

    以下是一些关于"Oracle自带的人力资源数据库设计"的关键知识点: 1. **用户和权限**:HR模式的用户是`hr`,对应的密码是`hr`。这代表了一个拥有特定权限的数据库角色,可以访问和操作HR模式下的所有对象。 2. **表...

    Oracle分析函数参考手册

    在Oracle自带的HR用户下的表中,可以找到许多用于学习分析函数的实例。如果没有安装HR用户,可以通过在SYS用户下运行$ORACLE_HOME/demo/schema/human_resources/hr_main.sql脚本来创建。 分析函数的工作原理通常...

    oracle存储过程_函数_语法_大全_详解

    数组可以使用Oracle自带的数组类型或者自定义数组类型。 ##### 1. 使用Oracle自带的数组类型 Oracle提供了几种内置的数组类型,可以直接使用。 **示例:** ```sql CREATE OR REPLACE PROCEDURE test (y OUT ...

    oracle 函数

    SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。这些函数均可用于SELECT,WHERE、ORDER BY等子句中,例如下面...

    oracle 系统表大全

    这些系统表提供了关于数据库结构、配置和状态的关键信息,对于数据库管理员(DBA)以及希望深入了解数据库内部运作的开发者来说极为重要。 #### 二、用户管理 1. **查询用户信息**: - `SELECT username FROM dba_...

    提高ORACLE数据库的查询统计速度

    - **定期进行性能监控与调优**:使用Oracle自带的工具(如AWR报告)定期检查数据库性能状况,并根据反馈结果进行相应调整。 ##### 3. SQL语句优化 - **避免使用SELECT ***:指定需要查询的字段可以减少数据传输量...

    Oracle SQL语法速查

    1. **SQL*Plus**:Oracle自带的命令行工具,可执行SQL查询、脚本,查看和管理数据库对象。 2. **SQL Developer**:图形化界面的开发工具,提供更友好的查询和数据库管理功能。 3. **PL/SQL Developer**:专门针对PL/...

    Oracle课件

    - SQL*Plus:Oracle自带的命令行工具,可以执行SQL命令和PL/SQL程序。 7. **Oracle命令大全** - SQL*Plus命令:列出常见的SQL*Plus命令,如DESCRIBE、ALTER、GRANT等。 - 数据库维护:了解数据库备份、恢复、...

    Oracle经典教程(入门到精通很详细)

    而iSQL*Plus和SQL*Plus是Oracle数据库自带的命令行界面工具,它们可以用来执行SQL语句和PL/SQL脚本,是学习和测试Oracle数据库的强大工具。 总之,Oracle数据库是一个庞大且复杂的系统,掌握从基础到高级的知识技能...

    学习oracle练习sql脚本.zip

    4. 查询数据(SELECT):熟练掌握SELECT语句,包括选择列、过滤行(WHERE子句)、排序(ORDER BY子句)、分组(GROUP BY子句)和聚合函数(COUNT、SUM、AVG等)。 5. 更新数据(UPDATE):了解如何修改已存在于表中...

    Oracle 10g数据库管理源代码

    9. **存储过程和函数**:Oracle支持PL/SQL编程,源代码会揭示如何编译、执行存储过程和函数,以及如何与其他数据库组件交互。 10. **数据仓库与OLAP**:Oracle 10g提供了数据仓库和联机分析处理(OLAP)功能,源代码...

    提高Oracle查询效率

    - **Explain Plan**:Oracle自带的解释计划工具,可以分析SQL执行的步骤和资源消耗,帮助优化SQL语句。 - **SQL*Plus**:Oracle的命令行工具,可以运行SQL语句并查看执行计划,还可以收集性能统计信息。 - **DBMS...

    oracle韩顺平视频以及课件

    10. **问题诊断与性能调优**:学习如何使用Oracle自带的诊断工具如 tkprof 和 trace 文件,以及如何通过 Explain Plan 分析SQL执行计划。 通过韩顺平老师的视频教程和课件,你将能系统地学习Oracle数据库的各项核心...

    Oracle 自定义split 函数实例详解

    在Oracle数据库中,系统并未内置一个直接用于字符串分割的`SPLIT`函数,但我们可以根据需求自定义一个。本文将详细介绍如何在Oracle中创建一个自定义的`SPLIT`函数,以及如何使用这个函数进行字符串处理。 首先,...

Global site tag (gtag.js) - Google Analytics