前言:
环境是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个自带函数总结归纳"中可能涵盖的关键知识点的详细解释: 1. 数学函数: - ABS():返回绝对值。 - CEIL()和FLOOR():分别向上和向下取整。 - ROUND():四舍五入到指定的小数位数。 - MOD()...
Oracle数据库系统中内置了MD5函数,这是一种广泛使用的哈希函数,用于生成固定长度的数字摘要,通常用于数据完整性校验和密码存储。MD5全称为Message-Digest Algorithm 5,由Ron Rivest在1991年设计,尽管它在安全性...
### Oracle中将小写金额转换为大写金额的函数实现 在Oracle数据库中,有时我们需要将数字金额转换成中文大写形式,特别是在财务系统中,这样的功能非常实用且常见。本文将详细介绍一个自定义的Oracle函数`money_to_...
Oracle函数文档是一个包含Oracle数据库系统中常用函数和API的资源集合,主要以CHM(Microsoft Compiled HTML Help)格式提供。这种格式的文档通常便于离线查阅,内容组织有序且易于搜索。下面将详细介绍这两个CHM...
在Oracle SQL中,没有内置的函数可以直接将数字转换为汉字大写的金额。因此,我们需要编写自定义的函数来完成这个任务。这里提供一个名为`num2rmb`的函数示例,这个函数通常会包含在`num2rmb.sql`文件中。 `num2rmb...
### Oracle 自带表知识点概述 #### 一、Oracle 自带表简介 Oracle 数据库系统包含了一些预定义的表,这些表通常被称作“Oracle 自带表”。它们主要用于数据库管理和测试场景,帮助用户理解 SQL 查询的基本操作。在...
以下是一些关于"Oracle自带的人力资源数据库设计"的关键知识点: 1. **用户和权限**:HR模式的用户是`hr`,对应的密码是`hr`。这代表了一个拥有特定权限的数据库角色,可以访问和操作HR模式下的所有对象。 2. **表...
在Oracle自带的HR用户下的表中,可以找到许多用于学习分析函数的实例。如果没有安装HR用户,可以通过在SYS用户下运行$ORACLE_HOME/demo/schema/human_resources/hr_main.sql脚本来创建。 分析函数的工作原理通常...
数组可以使用Oracle自带的数组类型或者自定义数组类型。 ##### 1. 使用Oracle自带的数组类型 Oracle提供了几种内置的数组类型,可以直接使用。 **示例:** ```sql CREATE OR REPLACE PROCEDURE test (y OUT ...
SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。这些函数均可用于SELECT,WHERE、ORDER BY等子句中,例如下面...
这些系统表提供了关于数据库结构、配置和状态的关键信息,对于数据库管理员(DBA)以及希望深入了解数据库内部运作的开发者来说极为重要。 #### 二、用户管理 1. **查询用户信息**: - `SELECT username FROM dba_...
- **定期进行性能监控与调优**:使用Oracle自带的工具(如AWR报告)定期检查数据库性能状况,并根据反馈结果进行相应调整。 ##### 3. SQL语句优化 - **避免使用SELECT ***:指定需要查询的字段可以减少数据传输量...
1. **SQL*Plus**:Oracle自带的命令行工具,可执行SQL查询、脚本,查看和管理数据库对象。 2. **SQL Developer**:图形化界面的开发工具,提供更友好的查询和数据库管理功能。 3. **PL/SQL Developer**:专门针对PL/...
- SQL*Plus:Oracle自带的命令行工具,可以执行SQL命令和PL/SQL程序。 7. **Oracle命令大全** - SQL*Plus命令:列出常见的SQL*Plus命令,如DESCRIBE、ALTER、GRANT等。 - 数据库维护:了解数据库备份、恢复、...
而iSQL*Plus和SQL*Plus是Oracle数据库自带的命令行界面工具,它们可以用来执行SQL语句和PL/SQL脚本,是学习和测试Oracle数据库的强大工具。 总之,Oracle数据库是一个庞大且复杂的系统,掌握从基础到高级的知识技能...
4. 查询数据(SELECT):熟练掌握SELECT语句,包括选择列、过滤行(WHERE子句)、排序(ORDER BY子句)、分组(GROUP BY子句)和聚合函数(COUNT、SUM、AVG等)。 5. 更新数据(UPDATE):了解如何修改已存在于表中...
9. **存储过程和函数**:Oracle支持PL/SQL编程,源代码会揭示如何编译、执行存储过程和函数,以及如何与其他数据库组件交互。 10. **数据仓库与OLAP**:Oracle 10g提供了数据仓库和联机分析处理(OLAP)功能,源代码...
- **Explain Plan**:Oracle自带的解释计划工具,可以分析SQL执行的步骤和资源消耗,帮助优化SQL语句。 - **SQL*Plus**:Oracle的命令行工具,可以运行SQL语句并查看执行计划,还可以收集性能统计信息。 - **DBMS...
10. **问题诊断与性能调优**:学习如何使用Oracle自带的诊断工具如 tkprof 和 trace 文件,以及如何通过 Explain Plan 分析SQL执行计划。 通过韩顺平老师的视频教程和课件,你将能系统地学习Oracle数据库的各项核心...
在Oracle数据库中,系统并未内置一个直接用于字符串分割的`SPLIT`函数,但我们可以根据需求自定义一个。本文将详细介绍如何在Oracle中创建一个自定义的`SPLIT`函数,以及如何使用这个函数进行字符串处理。 首先,...