多行转换成字符串
来源:互联网 发布:python 指数运算 编辑:程序博客网 时间:2024/05/23 01:33
之前写程序,费老大劲实现了多行转换成字符串,结果因为SQL过于复杂被否了,然后就一顿改成在JAVA代码里处理查询结果返回指定格式。
以下借助学习trunc截取时间函数来做一个多行转换成字符串的例子。
--trunc截取当前月份第一天trunc(sysdate,'MM')
--wmsys.wm_concat()实现多行转换成字符串
select wmsys.wm_concat(monthDate)
from (select trunc(sysdate, 'MM') + rownum - 1 monthDate
from dual
connect by rownum <= to_number(to_char(last_day(SYSDATE), 'DD')));
--SYS_CONNECT_BY_PATH实现多行转换成字符串,用逗号连接;需要先生成递归树
select substr(max(sys_connect_by_path(monthDate, ',')), 2)
from (
---child和parent根据rownum生成层次关系
select monthDate, rownum parent, rownum + 1 child
from (select trunc(sysdate, 'MM') + rownum - 1 monthDate
from dual
connect by rownum <=
to_number(to_char(last_day(SYSDATE), 'DD'))))
start with parent = 1
connect by prior child = parent;
刚才在论坛了看到了cnwz自己写的函数,才意识到这个当初自己也可以写函数实现的,收藏一下:
function str_cat( key_name in varchar2,key in varchar2,coname in varchar2,tname in varchar2 ) return varchar2
/*
功能:根据指定的表名、连接字段名、关键字段名及值,返回字符串字段的连接值(类似聚合函数)
输入参数:
key_name:用于判断的关键字段名,字符串(大写,可以是表达式)
key:用于判断的关键字段值,字符串(大写,可以是表达式)
coname:连接的字段名,字符串(大写)
tname:输入,表名,字符串(大写)
返回值:连接后的字符串(分隔符:,)
*/
is
str varchar2(4000);
sep varchar2(2);
val varchar2(4000);
cur SYS_REFCURSOR;
begin
open cur for 'select '||coname||' from '|| tname || ' where ' || key_name || ' = :x ' using key;
loop
fetch cur into val;
exit when cur%notfound;
str := str || sep || val;
sep := ', ';
end loop;
close cur;
return str;
end;
- 多行转换成字符串
- sql 分隔符字符串转换成表以及多行记录列值转换成字符串
- Oracle多行转换成字符串方法总结
- Oracle多行转换成字符串方法总结
- Oracle多行转换成字符串方法总结
- Oracle多行转换成字符串方法总结
- 数据库将字符串转换为多行
- 多行数据转换成一个字符串
- 字符串 转换成 Timestamp
- 整数转换成字符串
- 转换字符串成INT64
- 正整数转换成字符串
- List 转换成字符串
- varbinary转换成字符串
- 整数转换成字符串
- 文件转换成字符串
- 数字转换成字符串
- 整数转换成字符串
- 【转】 Heritrix运行和任务设置的学习总结
- JFace DataBinding 中的 MultiValidator学习和体会
- 利用U盘重装系统的方法
- ip分片技术
- 浅谈Java的输入输出流
- 多行转换成字符串
- 观察者模式的故事--Symbian
- VMVare ESX
- Hive使用杂记
- Lucene 源码剖析 五 索引文件结构(4)
- 改变IT世界的11大Apache开源技术
- 改变IT世界的11大Apache开源技术
- 技术开发人员SQL规范
- Lucene 源码剖析 六