可以利用递归来实现。参考这个例子改改就可以实现。drop function split;create function split (str varchar(100) ) returns table (name varchar(10)) language sql reads sql data no external action deterministic return with t ( name ,name1,pos,lay...
显示全部可以利用递归来实现。
参考这个例子改改就可以实现。
drop function split;
create function split (str varchar(100) )
returns table (name varchar(10))
language sql reads sql data no external action deterministic
return
with t ( name ,name1,pos,lay )
as
(
values (str,str , 1 ,1 )
union all
select
case
when LOCATE(',',name1,pos ) =0 then
substr (name1,1)
else
substr(name1 ,pos,LOCATE(',',name1,pos ) - pos )
end case,
case when LOCATE(',',name1,pos ) =0 then
NULL
else
substr(name1 ,LOCATE(',',name1,pos ) +1 )
end case,
1,
lay + 1
from t
where pos<=length(name1)
)
select name from t where lay > 1 ;
select * from table(split('a,v,c,v')) as t;
收起