WMSYS.WM_CONCAT函数的用法
wmsys.wm_concat:列转行
select wmsys.wm_concat(name) from test;
wm_concat:行转列
select wm_concat(name) from test;
我们通过 10g 所提供的 WMSYS.WM_CONCAT 函数可以完成 行转列的效果
例子如下:
1.准备数据:
Sql代码
create table
testtable (id number,name varchar2(30));
insert into testtable
values(10,'ab‘);
insert into testtable values(10,'bc’);
insert into testtable values(10,'cd‘);
insert into
testtable values(20,'hi’);
insert into testtable
values(20,'ij‘);
insert into testtable values(20,'mn’);
查询下试试:
Sql代码
select *
from testtable;
ID NAME
10 ab
10
bc
10 cd
20 hi
20 ij
20 mn
2.效果
2.1行转列的效果1(根据id分组)
Sql代码
select id,wmsys.wm_concat(name) name from testtable
group by id;
ID NAME
10 ab,bc,cd
20
hi,ij,mn
2.2行转列的效果2(在id,name排序基础上转换)
Sql代码
select id,wmsys.wm_concat(name) over (order by id,name)
name from testtable;
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
2.3行转列的效果3(根据id字段拆分)
Sql代码
select
id,wmsys.wm_concat(name) over (partition by id) name from testtable;
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
2.4行转列的效果4(根据id,name字段拆分)
Sql代码
select id,wmsys.wm_concat(name) over (partition by id,name)
name from testtable;
ID NAME
10 ab
10 bc
10 cd
20 hi
20 ij
20 mn
现在这个效果和不拆一样,不过如果有另外多个字段,就会有效果的哦
根据不同需求,此函数可解决两表多个条件字段的查询
例:
select distinct t.* from third_product t join (select p.prot_id, wmsys.wm_concat(p.prop_value) prop_value from product_prop p group by p.prot_id) w on w.prot_id = t.id where 1 =1 and w.prop_value like '%信封%' and w.prop_value like '%蓝色%'
分享到:
相关推荐
在Oracle数据库环境中,WMSYS.WM_CONCAT函数是一个用于字符串连接的实用工具,尤其在处理多值列时非常有用。然而,有时由于各种原因,这个函数可能丢失或损坏,需要进行重建。以下是对重建WMSYS.WM_CONCAT函数涉及的...
根据给定文件的信息,本文将深入探讨“wmsys_wm_concat函数结果拆解”的相关知识点,包括该函数的基本概念、应用场景以及SQL示例代码的详细解析。 ### wmsys_wm_concat函数简介 在Oracle数据库中,`wmsys.wm_...
**WM_CONCAT函数的背景:** 在Oracle 10g及更早版本中,WMSYS.WM_CONCAT是一个实用的内置函数,允许用户将多个字符串合并成一个单一的字符串,类似于其他数据库系统中的CONCAT或者STRING_AGG函数。然而,由于性能和...
在Oracle数据库中,`WMSYS.WM_CONCAT`函数是一个非常实用的工具,它用于将多行数据合并成一个单行字符串。然而,由于其内部处理机制,当需要合并的数据量过大时,可能会遇到“字符串缓冲区太小”的错误。这是因为`WM...
根据给定文件的信息,我们可以深入探讨`wmsys.wm_concat`的使用方法及其在不同SQL语句中的应用。 ### 基础用法 `wmsys.wm_concat`函数的基本语法如下: ```sql wmsys.wm_concat(column1, column2, ..., columnN) ...
Oracle10g之后有些版本已不包含WMSYS.WM_CONCAT函数,若用到此函数, 系统会提示异常:ORA-00904: "WM_CONCAT": invalid identifier 因此需单独重建此函数,方法如下: 解压附件,在sqlplus中执行包里的owmctab....
这个错误通常意味着试图访问或使用`WMSYS.WM_CONCAT`函数时遇到了问题,这是一个在早期Oracle版本中提供的聚合函数,用于字符串连接,但在较新的版本中被弃用并替换为其他更安全和高效的解决方案。 `WMSYS`是Oracle...
解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 在sqlplus中执行包里的owmctab.plb、owmaggrs.plb、owmaggrb.plb三个脚本即可。 简单来说,用PL/SQL执行下一下几个脚本就可以了。 特别要注意:PL/SQL登录时,要...
#### 二、WMSYS.WM_CONCAT函数介绍 `WMSYS.WM_CONCAT`函数是Oracle数据库中的一个内置函数,主要用于将多个字符串连接成一个单一的字符串。该函数特别适用于处理大量数据的聚合操作,尤其是在需要将多行记录转换为...
在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但系统无法识别该函数,提示其为无效的标识符。WM_CONCAT是Oracle 10g及更早版本中用于字符串合并的...
1、下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb ...如果执行结果报错,说找不到WMSYS用户,那么执行 @C:\Users\JOYTRAVEL\Desktop\WMSYS用户\owmctab.plb; 再执行owmaggrb和owmaggrs
包含owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 三个文件,可解决OracleXE中没有WM_CONCAT函数的问题;解决方案如下:1、下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 2、用sqlplus登录:...
* 自定义聚合函数 wmsys.wm_concat 替换办法 * 超大字符串拼接,单个字符串4000、分隔符100,可拼出超4000的超长字符串 * 可自定义指定分隔符separator * 可自定义指定排序字段sequence,对于数字或日期类型的...
WMSYS.WM_CONCAT是Oracle Spatial中的一个函数,用于处理多行文本数据的连接操作,但在某些情况下可能会出现"标识符无效"的错误。这个问题通常出现在数据库升级、恢复或者对象权限出现问题时。 当您遇到“WMSYS.WM_...
在Oracle数据库中,有时我们需要将同一列中的多个值合并成一个字符串,这时就可以使用`WM_CONCAT`函数。`WM_CONCAT`是一个非标准的Oracle函数,它在Oracle 9i及以后的版本中被广泛使用,但在Oracle 11g R2版本中由于...
在这种情况下,`WMSYS.WM_CONCAT`函数是一个非常实用的工具,尤其是在处理大量交易记录时,用户希望避免滚动浏览,而是直接看到所有记录的汇总。本文将详细介绍如何利用`WMSYS.WM_CONCAT`来实现这一功能。 首先,`...
1. **利用系统包创建WM_CONCAT函数**:Oracle提供了一套脚本来创建一个类似`WM_CONCAT`的函数,这通常涉及到在`WMSYS`模式下执行一系列的PL/SQL语句,以复现`WM_CONCAT`的功能。这个过程需要对Oracle的内部工作原理...