`

Oracle函数wmsys.wm_concat的使用

阅读更多

文章转载http://www.2cto.com/database/201204/128928.html

 

首先介绍语法:

wmsys.wm_concat
 
Definition:
The Oracle PL/SQL WM_CONCAT function is used to aggregate data from a number of rows into a single row, giving a list of data associated with a specific value. In effect, it cross-tabulates a comma delimited list.
 
Note that WM_CONCAT is undocumented and unsupported by Oracle, meaning it should not be used in production systems. The LISTAGG function, which can produce the same output asWM_CONCAT is both documented and supported by Oracle.
 
例子:
[sql]
select t1.main_id,
to_char(wmsys.wm_concat(t1.send_id || '||' || t2.realname || '||' ||
t2.IMG_PATH)) sendidlist
from LCMS_SEND_USER t1, LCMS_USER_STUD t2
group by t1.main_id;
 
结果:
 
 
网络中也有这样使用:
 
下面只是收藏:
 
[sql]
SQL> select id,wmsys.wm_concat(name) over (order by id) name from idtable;
www.2cto.com
ID NAME
---------- --------------------------------------------------------------------------------
10 ab,bc,cd
10 ab,bc,cd
10 ab,bc,cd
20 ab,bc,cd,hi,ij,mn
20 ab,bc,cd,hi,ij,mn
20 ab,bc,cd,hi,ij,mn
 
6 rows selected
 
[sql]
SQL> select id,wmsys.wm_concat(name) over (order by id,name) name from idtable;
 
ID NAME
---------- --------------------------------------------------------------------------------
10 ab
10 ab,bc
10 ab,bc,cd
20 ab,bc,cd,hi
20 ab,bc,cd,hi,ij
20 ab,bc,cd,hi,ij,mn
www.2cto.com
6 rows selected
 
个人觉得这个用法比较有趣.
 
SQL> select id,wmsys.wm_concat(name) over (partition by id) name from idtable;
 
ID NAME
---------- --------------------------------------------------------------------------------
10 ab,bc,cd
10 ab,bc,cd
10 ab,bc,cd
20 hi,ij,mn
20 hi,ij,mn
20 hi,ij,mn
 
6 rows selected
 
SQL> select id,wmsys.wm_concat(name) over (partition by id,name) name from idtable;
www.2cto.com
ID NAME
---------- --------------------------------------------------------------------------------
10 ab
10 bc
10 cd
20 hi
20 ij
20 mn
 
6 rows selected
 
 
 
作者 psyuhen

 

 

分享到:
评论

相关推荐

    重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件

    WM_CONCAT是一个非标准的Oracle函数,它能将多个字符串合并成一个单一的字符串,用分隔符(默认为逗号)连接。这个函数在早期的Oracle版本中很常用,但在11g及更高版本中被DEPRECATED,推荐使用SQL标准的CONCAT函数...

    wmsys_wm_concat函数结果拆解

    在Oracle数据库中,`wmsys.wm_concat`是一个常用的数据处理函数,主要用于连接字符串。它能够接受多个参数,并将这些参数用逗号分隔的形式存储为一个字符串。此函数广泛应用于数据仓库或报表系统中,特别是在需要将...

    ORA-00904 WMSYS.WM_CONCAT标识符无效解决方案

    当尝试在Oracle 11gR2或更高版本中使用WMSYS.WM_CONCAT时,会出现ORA-00904错误,因为这个函数不再可用。这可能是由于以下几个原因: 1. **数据库版本升级**:从旧版本升级到11gR2或更高版本后,WM_CONCAT不再受支持...

    Oracle 11g 重建WMSYS.WM_CONCAT函数

    Oracle10g之后有些版本已不包含WMSYS.WM_CONCAT函数,若用到此函数, 系统会提示异常:ORA-00904: "WM_CONCAT": invalid identifier 因此需单独重建此函数,方法如下: 解压附件,在sqlplus中执行包里的owmctab....

    类似于wmsys.wm_concat的自定义函数clob版

    在Oracle数据库中,`WMSYS.WM_CONCAT`函数是一个非常实用的工具,它用于将多行数据合并成一个单行字符串。然而,由于其内部处理机制,当需要合并的数据量过大时,可能会遇到“字符串缓冲区太小”的错误。这是因为`WM...

    wmsys.wm_concat详细示例.txt

    在Oracle数据库中,`wmsys.wm_concat`是一个非常实用且强大的函数,主要用于将多个字符串连接成一个字符串。此函数常用于数据聚合场景,尤其是当需要在一个查询中汇总特定分组下的所有值时。根据给定文件的信息,...

    Oracle重建WMSYS用户及WMSYS.WM_CONCAT函数(更低分)

    这个错误通常意味着试图访问或使用`WMSYS.WM_CONCAT`函数时遇到了问题,这是一个在早期Oracle版本中提供的聚合函数,用于字符串连接,但在较新的版本中被弃用并替换为其他更安全和高效的解决方案。 `WMSYS`是Oracle...

    Oracle重建WMSYS用户及WMSYS.WM_CONCAT函数

    解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 在sqlplus中执行包里的owmctab.plb、owmaggrs.plb、owmaggrb.plb三个脚本即可。 简单来说,用PL/SQL执行下一下几个脚本就可以了。 特别要注意:PL/SQL登录时,要...

    oracle行转列聚合函数WMSYS.WM_CONCAT

    ### Oracle行转列聚合函数WMSYS.WM_CONCAT详解 #### 一、概述 在进行数据处理时,经常会遇到需要将多行数据合并为单行的情况,这通常被称为“行转列”。Oracle数据库提供了多种方法来实现这一需求,其中`WMSYS.WM_...

    ORA-00904: "WM_CONCAT": 标识符无效

    3. **使用其他数据库功能**:除了LISTAGG,还可以考虑使用XMLAGG、CONNECT_BY_LEVEL等其他Oracle函数,结合转换和处理来达到类似的效果。 4. **查询优化**:在某些情况下,通过改变查询策略,比如使用子查询、连接...

    Oracle10g自定义聚合函数(字符串拼接)

    * 自定义聚合函数 wmsys.wm_concat 替换办法 * 超大字符串拼接,单个字符串4000、分隔符100,可拼出超4000的超长字符串 * 可自定义指定分隔符separator * 可自定义指定排序字段sequence,对于数字或日期类型的...

    Oracle没有WM_CONCAT函数的解决办法.rar

    1、下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb ...如果执行结果报错,说找不到WMSYS用户,那么执行 @C:\Users\JOYTRAVEL\Desktop\WMSYS用户\owmctab.plb; 再执行owmaggrb和owmaggrs

    OracleXE中没有WM_CONCAT函数

    包含owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 三个文件,可解决OracleXE中没有WM_CONCAT函数的问题;解决方案如下:1、下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 2、用sqlplus登录:...

    oracle_wmsys用户

    总之,Oracle WMSYS用户是与Oracle Warehouse Builder紧密相关的,而WMSYS.WM_CONCAT函数是这个环境中一个重要的聚合函数,用于字符串处理。当需要重建这个函数时,需遵循正确的步骤,同时关注与之相关的OWB对象,...

    重建WMSYS用户.zip

    WMSYS.WM_CONCAT是Oracle Spatial中的一个函数,用于处理多行文本数据的连接操作,但在某些情况下可能会出现"标识符无效"的错误。这个问题通常出现在数据库升级、恢复或者对象权限出现问题时。 当您遇到“WMSYS.WM_...

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

    首先,`WMSYS.WM_CONCAT`是Oracle提供的一种字符串拼接函数,它可以将相同分组内的多行数据以特定的分隔符(默认为逗号)连接起来。例如,如果我们有一个产品表,其中包含多个类型的产品和对应的产品名称,我们可以...

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

    `WM_CONCAT`是一个非标准的Oracle函数,它在Oracle 9i及以后的版本中被广泛使用,但在Oracle 11g R2版本中由于性能和并发性问题被废弃。尽管如此,对于一些旧系统或为了兼容性,开发者仍然会使用这个函数。 `WM_...

Global site tag (gtag.js) - Google Analytics