Oracle中将查询出的多条记录的某个字段拼接成一个字符串的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle中将查询出的多条记录的某个字段拼接成一个字符串的方法相关的知识,希望对你有一定的参考价值。
select billid,CONTAINER_NO from FM_PACKING_LINE
查询的结果是
我想把billid等于15609的所有 CONTAINER_NO 值合并在同一字段
要显示这个
,求Oracle的sql语句,谢谢
1、先创建一个JSONObject对象。
2、然后把JSONObject对象转换成字符串且把“”去掉,因为等下需要拼接其他数据。
3、判断转换完的字符串是否是空数据还有已经有数据了,如果有就需要加“,”。
4、字符串开始拼接字符串,这里被拼接的字符串一定要符合json格式。
5、字符串拼接完成后把之前去掉的“”重新加上代表一个完整的json字符串结束。
6、重新把拼接好的字符串转换成JSONObject。
7、然后使用get(key)的方法来获取拼接字符串的属性值,能获得就说明拼接的字符串有效了。
参考技术A select wm_concat(t.email) from TEMP t,这是oracle 自带函数,如果超过4000会报错,超过4000就只能自己写函数了 参考技术B select billid,listagg(container_no,';') within group (order by container_no) from fm_packing_line group by billid追问大神 我执行了
但是报错了 结果是这样的 ,我是Oracle10g
from fm_packing_line
group by billid 参考技术C with temp as(
select 'China' nation ,'Guangzhou' city from dual union all
select 'China' nation ,'Shanghai' city from dual union all
select 'China' nation ,'Beijing' city from dual union all
select 'USA' nation ,'New York' city from dual union all
select 'USA' nation ,'Bostom' city from dual union all
select 'Japan' nation ,'Tokyo' city from dual
)
select nation,listagg(city,',') within GROUP (order by city)
from temp
group by nation
这是最基础的用法:
LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)
用法就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来。
非常方便 参考技术D 可以考虑使用wmsys.wm_concat方法,该方法是将记录的值使用逗号间隔拼接
使用方法如下:
select wmsys.wm_concat(name) name from idtable;
NAME
---------- --------------------------------------------------------------------------------
ab,bc,cd
oracle中sql语句的问题
1.Oracle中将查询出的多条记录的某个字段拼接成一个字符串的方法
11g里面用listagg:(19c也可用)
select listagg(name,\',\') within (order by id) from table
10g里面用wm_concat:
select wm_concat(name) from table
wm_concat是undocument的
listagg是11g document的
以上是关于Oracle中将查询出的多条记录的某个字段拼接成一个字符串的方法的主要内容,如果未能解决你的问题,请参考以下文章