Oracle中使用REGEXP_SUBSTR,regexp_replace,wm_concat函数

REGEXP_SUBSTR函数格式以下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr     :须要进行正则处理的字符串
__pattern    :进行匹配的正则表达式
__position   :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier   :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
实际应用以下:在oracle中,使用一条语句实现将'123,456,789'拆分红'123','456','789'的集合。
1.select REGEXP_SUBSTR('123,456,789', '[^,]+', 1, 1) value from dual;
结果是:123

2.select REGEXP_SUBSTR('123,456,789', '[^,]+', 1, 3) value from dual;css

结果是:789正则表达式

获取一个多个数值的列,从而可以让结果以多行的形式展现出来  oracle

1. select level from dual connect by level < 5;函数

结果是:优化

--1regexp

--2blog

--3字符串

--4it

将上面REGEXP_SUBSTR和connect by level 关联 使用io

select TRIM(REGEXP_SUBSTR('123,456,789', '[^,]+', 1, level)) value from dual connect by level <= 3;

结果是:

--123

--456

--789

优化上面的SQL语句,让生成的行的数量符合实际状况 

select REGEXP_SUBSTR('123,456,789', '[^,]+', 1, level) value
from dual
connect by level <= length(regexp_replace('123,456,789', '[^,]*')) + 1;

结果是:

--123

--456

--789

 

regexp_replace函数:

1. select regexp_replace('123,456,789', '[^,]+','q') from dual;

结果:

--q,q,q

2. select regexp_replace('123,456,789', '[^,]+') from dual;

结果:

,,

 

wm_concat函数

该函数能够把列值以","号分隔起来,并显示成一行

效果:

select t.id_cssp_user from cssp_user_info t where rownum < 5;

select to_char(wm_concat(t.id_cssp_user))
from cssp_user_info t
where rownum < 5;

select t.mobile, to_char(wmsys.wm_concat(t.user_name))
from cssp_user_info t
where rownum<100
group by t.mobile
having count(0) > 1;

相关文章
相关标签/搜索