bd2实现split字符串分割函数

实验环境:
db2版本: 10.1
实现效果

select * from table(split('123,13,12,3,1',','))

bd2实现split字符串分割函数_第1张图片
思路:根据分隔符递归找要划分的起始位置,然后截取
函数代码:

CREATE OR REPLACE FUNCTION SPLIT( InputStr VARCHAR(8000),Separator VARCHAR(255))
            RETURNS TABLE (Str varchar(8000),startno int,endno int,SplitStr varchar(1000),sort int)
            RETURN
            with aa(str,startno,endno) as (
            select InputStr,1,instr(InputStr,Separator) from sysibm.dual
            union all
            select str,endno+1,locate(Separator,(case when substr(str,length(str))=Separator then str else str||Separator end),endno+1) from aa
            where locate(Separator,(case when substr(str,length(str))=Separator then str else str||Separator end),endno+1)>0
            )
            select str,startno,endno,substr(str,startno,endno-startno) as result,row_number() over() as num from aa
GO

参数解释:第一个参数 InputStr 为要切割的字符串,第二个参数Separator 为分隔符

你可能感兴趣的:(db2,db2)