`
ronon
  • 浏览: 187669 次
  • 性别: 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个自带函数总结归纳,对oracle自带的110个函数使用方法的讲解示例。一个oracle函数快速查询的手册

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

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

    oracle汉字转拼音的函数代码

    oracle中进行汉字转拼音的函数代码。也是从别处找到的,觉得挺有用的,也许对你也有帮助!

    Oracle MD5函数

    oracle自带MD5函数,附件中的函数对系统的函数进行了简单的调用和封装。

    oracle常用函数

    在sql与pl/sql中都自带了很多类型的函数,比如有字符、数字、日期、转换和混合型等多种函数用于处理单行数据,因此这些都被称为单行函数.这些函数都可以被用于select、where和oder by等子句中.下面我们就来分析单行...

    Oracle函数文档

    压缩包中有两个API,是我在网上找见的最好的OracleAPI了 他们包含了Oracle中的所有东西. 对了,是chm格式的

    Oracle数据库常用函数

    Oracle数据库常用函数 自带函数查询用不错的文档一篇

    oracle内部函数大全

    oracle内部函数大全:包括所有的oracle自带的内部函数及解析。

    oracle 函数

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

    Oracle 自定义split 函数实例详解

    主要介绍了Oracle 自定义split 函数实例详解的相关资料,需要的朋友可以参考下

    Oracle SQL:经典练习题(附答案)

    Oracle基础练习题,采用Oracle数据库自带的表,适合初学者,其中包括了一些简单的查询,已经具有Oracle自身特点的单行函数的应用,后面附答案,非常值得一看

    最全的oracle常用命令大全.txt

    下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...

    OraclePL/SQL单行函数和组函数详解

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

    oracle实验报告

    Oracle数据库自带的几个触发器(最简单触发器格式)示例如下: -- create or replace trigger MDSYS.sdo_drop_user after drop on DATABASE declare stmt varchar2(200); BEGIN if dictionary_obj_type = 'USER...

    oracle最经典查询练习题及答案

    这是一个采用Oracle数据库自带的表的查询语句的一个非常好的练习,其中包括了一些简单的查询,已经具有Oracle自身特点的单行函数的应用,非常值得一看.

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat 3. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行...

    给Oracle添加split和splitstr函数的方法

    最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理

    韩顺平oracle学习笔记

    Sqlplus是Oracle自带的工具软件,主要用于执行sql语句,pl/sql块。,如何使用:,, 1)在开始,程序,oracle,orachome90,, ,,application,development,sql*plus(这个是在dos下操作), 2)在运行栏中输入:sqlplusw或者...

Global site tag (gtag.js) - Google Analytics