select regexp_substr(q.nums, '[^,]+', 1, rownum,'i'), names
from (select '1,2,3' nums, '张三' names from dual) q
connect by rownum <= LENGTH(q.nums) - LENGTH(REGEXP_REPLACE(q.nums, ',', '')) + 1;
分割字符串中所有的逗号,然后成多行
参数说明,
参数1: 待分割字符串
参数2:正则表达式
参数3:起始位置,从第几个字符开始正则表达式匹配(默认为1)
参数4:标识第几个匹配组,默认为1
参数5:模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
select regexp_substr(q.nums, '[^,]+', 1, rownum,'i'), names from (select '1,2,3' nums, '张三' names from dual) qconnect by rownum &lt;= LENGTH(q.nums) - LENGTH(REGEXP_REPLACE(q.nums, ',', '')) + 1;分割...
CREATE OR REPLACE TYPE "RESOLVE_STR" IS TABLE OF VARCHAR2 (4000);
--定义函数
CREATE OR REPLACE FUNCTION F_SPLIT
P_STR IN VARCHAR2,
P_DELIMITER IN varchar2 := ','
参数3:起始位置,从第几个字符开始正则表达式匹配(默认为1)
参数4:标识第几个匹配组,默认为1
参数5:模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
SELECT REGEXP_SUBSTR('34,56,-23', '[^,]+', 1, LEVEL
分割
单行
数据
我们需要使用REGEXP_SUBSTR和REGEXP_COUNT两个
ORACLE
函数
function REGEXP_SUBSTR(string, pattern, position, occurrence, modifier)
string:需要进行正则处理的字符串
pattern:进行匹配的正则表达式
position:起始位置,从第几个字符开始正则表达式匹配(默认为1)
occ...
利用
ORACLE
的REGEXP_SUBSTR()进行处理就好了
SELECT
DISTINCT REGEXP_SUBSTR( '371,370,368,409,1', '[^,]+', 1, LEVEL ) VERI_ITEM
DUAL T CONNECT BY LEVEL <= LENGTH('371,370,368,409,1') - LENGTH( REPLACE ( '371,370,368,409,1', ',', ''
REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr :需要进行正则处理的字符串
__pattern :进行匹配的正则表达式
__position :起始位置,从第几个字符开始正则表达式匹配(默认为1)