首先记录一下项目中遇到的问题:
描述:首先使用WM_CONCAT行转列,但是中间有一次出问题,所以前面加上了一个to_char(WM_CONCAT()),
这次是因为to_char的时候缓存长度不能超过4000;
去掉to_char方法
WM_CONCAT换成
RTRIM(XMLAGG(XMLPARSE(CONTENT 列名 || ',')) .GETCLOBVAL(), ',')
RTRIM作用是去掉最后的一个逗号
首先记录一下项目中遇到的问题:描述:首先使用WM_CONCAT行转列,但是中间有一次出问题,所以前面加上了一个to_char(WM_CONCAT()),这次是因为to_char的时候缓存长度不能超过4000;解决:去掉to_char方法WM_CONCAT换成RTRIM(XMLAGG(XMLPARSE(CONTENT 列名 || ',')) .GETCLOBVAL(), ',...
在进行使用
WM
_
CONCAT
进行列转行的字符串拼接时,可能会遇到
长度
超过
4000
的情况。这个时候oracle会报错。所以,在这个时候,最好的处理办法就是将结果集处理成CLOB格式。
下面是自定义的行转列函数。
CREATE OR REPLACE TYPE zh_
concat
_im
AUTHID CURRENT_USER AS OBJECT
CURR_STR clob,
STATIC FUNC...
转:http://blog.itpub.net/28998293/viewspace-1353103/
Oracle 10g版本的
wm
_
concat
为varchar2(
4000
),在使用
wm
_
concat
函数时,在字符串
长度
超过
4000
后报错,所以自定义一个类似的聚集函数,在内部使用CLOB处理,避免超长
问题
。
Oracle 11g版本的vm_
concat
返回类型为clob。
源码如下:--先
备忘:这个函数
最大
是
4000
,根据拼接列的
长度
,通过限制拼接条数来防止拼接字符串过长错误
--这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据
select info.id,
(select
wm
sys.
wm
_
concat
(replace(st1.illegal, ',', ','))
from...
用法和
wm
_
concat
对比如下:
wm
_conca(字段名)as 别名,
list
agg
(字段名, ‘,’) within group(order by rownum) as 别名,
注意:list
agg
()不支持distin...
a.STUDENT as student,
WM
_
CONCAT
(SOURCE_ID) as sourceId
from ML_LEARN_SITU a left join ML_LEARN_SITU_REL_SOURCE b on a.ID=b.SITU_ID
where
LESSON_CODE=#{lessonCode,jdbcType=VARCHAR}
group by a.id,a.STUDENT
这里要按名称分组将其他三个值都拼接起来,返回的都是
参考网址:
http://stackoverflow.com/questions/11541383/ordering-by-list-of-strings-in-oracle-sql-without-list
agg
字符串拼接技巧和方式:http://www.oracle-base.com/articles/misc/string-
agg
regation-techniques.php
o
wm
agg
rb.plb,o
wm
agg
rs.plb,o
wm
ctab.plb
1、下载三个文件:o
wm
ctab.plb 、 o
wm
agg
rs.plb 、 o
wm
agg
rb.plb
2、用sqlplus登录:sqlplus sys/123 as sysdba
3、执行@C:\Users\JOYTRAVEL\Desktop\
WM
SYS用户\o
wm
agg
rb.plb;
4、如果执行结果报错,说找不到
WM
SYS用户,那么执行 @C:\Users\JOYTRAVEL\Desktop\
WM
SYS用户\o
wm
ctab.plb;再执行o
wm
agg
rb和o
wm
agg
rs。
oracle
wm
_
concat
(column)函数使我们经常会使用到的,下面就教您如何使用oracle
wm
_
concat
(column)函数实现字段合并,如果您对oracle
wm
_
concat
(column)函数使用方面感兴趣的话,不妨一看。shopping:—————————————–u_id goods num——————————————1 苹果 22 梨子 51 西瓜 4
CURR_STR clob,
STATIC FUNCTION ODCI
AGG
REGATEINITIALIZE(SCTX IN OUT zh_
concat
_im)
RETURN NUMBER,
MEMBER FUNCTION ODCI
AGG
RE
group_
concat
和
wm
_
concat
都是用于连接字符串的函数,但是它们在不同的数据库管理系统中使用。
group_
concat
是MySQL中的函数,它将多个字符串连接成一个字符串,并用指定的分隔符进行分隔。例如,以下是使用group_
concat
函数将多个姓名连接成一个以逗号分隔的字符串的示例:
SELECT group_
concat
(name SEPARATOR ',') FROM table;
wm
_
concat
是Oracle数据库中的函数,它的功能与group_
concat
类似,将多个字符串连接成一个字符串,并用指定的分隔符进行分隔。以下是使用
wm
_
concat
函数将多个姓名连接成一个以逗号分隔的字符串的示例:
SELECT
wm
_
concat
(name) FROM table;
需要注意的是,
wm
_
concat
函数在较新版本的Oracle数据库中已被弃用,而在旧版本中仍可使用。在新版本的Oracle数据库中,可以使用LIST
AGG
函数来实现类似的功能:
SELECT LIST
AGG
(name, ',') WITHIN GROUP (ORDER BY name) FROM table;
总结来说,group_
concat
和
wm
_
concat
函数都是用于连接字符串的,但是在不同的数据库管理系统中使用。