Oracle OCP笔记(34)Oracle的特殊功能函数
2016-12-03 13:57
375 查看
Oracle OCP笔记(34)Oracle的特殊功能函数
Oracle有一些特殊功能函数,不太常用,但有时候很有用.一.列转行
1.多笔数据分组横向显示(使用wmsys.wm_concat)
with test as(
select 1 a, 'XXX' b from dual
union
select 1 a, 'YYY' b from dual
union
select 2 a, 'ZZZ' b from dual
)
select a, to_char(wmsys.wm_concat(b)) list_value
from test
group by a;
显示结果如下:
LIST_VALUE
--------------------------------------------------------------------------------
1XXX1YYY
2ZZZ
wmsys.wm_concat的返回值是CLOB.
wmsys.wm_concat是一个内部使用的函数,Oracle随时可以取消此函数,Oracle 12已不包含此函数.
2.多笔数据分组横向显示(使用listagg)
with test as(
select 1 a, 'XXX' b from dual
union
select 1 a, 'YYY' b from dual
union
select 2 a, 'ZZZ' b from dual
)
select listagg(a||b) within group(order by a) list_value
from test
group by a;
显示结果如下:
LIST_VALUE
--------------------------------------------------------------------------------
1XXX1YYY
2ZZZ
listagg的返回值是VARCHAR2,有长度限制,最长32767.
二.行转列
1.行转列(使用sys.odcivarchar2list)
select column_value
from table(sys.odcivarchar2list('1','2','3','4','5'));
显示结果如下:
COLUMN_VALUE
--------------------------------------------------------------------------------
1
2
3
4
5
2.行转列(使用CONNECT和正则表达式)
select regexp_substr('1,2,3,4,5','[^,]+',1,rownum) list_value
from dual
connect by rownum <= length('1,2,3,4,5') - length(replace('1,2,3,4,5',',')) +1;
显示结果如下:
LIST_VALUE
------------------
1
2
3
4
5
三.正则表达式替换
select regexp_replace('123456789', '678', 'WXYZ', 1 , 0, lower('I')) replace_value from dual;
显示结果如下:
REPLACE_VALUE
-------------
12345WXYZ9
替换搜索字符串有单边括号等特殊字符会报错,需要用斜杠转义.
select regexp_replace('123456789', '678(', '890', 1 , 0, lower('I')) from dual; --报错
select regexp_replace('12345678(9', '678\(', '890(', 1 , 0, lower('I')) from dual; --用斜杠转义后没有错误
需要转义的符号\/|().?*+[]{}^$等等.
相关文章推荐
- Oracle OCP笔记(31)使用闪回功能
- oracle里是否有类似于c语言的split()函数的功能???
- Oracle常用功能(函数)集锦
- oracle 存储过程和函数学习笔记
- SQL2000系统表、存储过程、函数的功能介绍及应用2009年01月21日 星期三 11:38虽然使用系统存储过程、系统函数与信息架构视图已经可以为我们提供了相当丰富的元数据信息,但是对于某些特殊的元数据信息,我们仍然需要直接对系统表进行查询。因为SQL
- Oracle分析函数学习笔记
- oracle日积月累[ZT]-浅析自动连续数或者按目的取数函数RANK(),DENSE_RANK()功能
- ORACLE PL/SQL子程序--过程和函数学习笔记
- oracle 笔记2 函数
- MyGeneration学习笔记(8) :dOOdad提供的数据绑定、特殊函数和事务处理
- Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)
- oracle 常用功能函数汇总
- 我的oracle笔记三(系统函数和系统包使用方面)
- Oracle分析函数学习笔记3
- Oracle分析函数学习笔记1
- Oracle SQL学习笔记 之 GROUP函数与GROUP BY子句
- Oracle 最常用功能函数经典汇总 (zz)
- Oracle 最常用功能函数经典汇总
- oracle所有函数的功能说明
- oracle所有函数的功能说明