db2自定义函数查找字符“,”在字段中第N次出现的位置
答案:1 悬赏:0 手机版
解决时间 2021-11-17 16:40
- 提问者网友:沉默的哀伤
- 2021-11-17 09:43
db2自定义函数查找字符“,”在字段中第N次出现的位置
最佳答案
- 五星知识达人网友:爱难随人意
- 2021-11-17 09:59
不知道下面这种处理方式, 对你有没有参考价值
db2 -td@
CREATE OR REPLACe FUNCTION f_split (
p_str varchar(1000),
p_split varchar(10)
) RETURNS TABLE (result VARCHAr(100))
LANGUAGE SQL
RETURN
with n(str, ori, pos) as (
values (p_str||p_split, 1, locate(p_split,p_str))
union all
select str, pos+length(p_split), locate(p_split, str, pos+length(p_split))
from n
where locate(p_split, str, pos+length(p_split))>0)
select substr(str, ori, pos-ori) as result from n
@
函数创建完毕以后,可以开始做查询的处理.
db2 => select result from table(f_split('aa,bb,cc',','))@
RESULT
--------------------
SQL0347W 递归公共表表达式 "TEST.N" 可能包含无限循环。 SQLSTATE=01605
aa
bb
cc
已选择 3 条记录,打印 1 条警告消息。
db2 -td@
CREATE OR REPLACe FUNCTION f_split (
p_str varchar(1000),
p_split varchar(10)
) RETURNS TABLE (result VARCHAr(100))
LANGUAGE SQL
RETURN
with n(str, ori, pos) as (
values (p_str||p_split, 1, locate(p_split,p_str))
union all
select str, pos+length(p_split), locate(p_split, str, pos+length(p_split))
from n
where locate(p_split, str, pos+length(p_split))>0)
select substr(str, ori, pos-ori) as result from n
@
函数创建完毕以后,可以开始做查询的处理.
db2 => select result from table(f_split('aa,bb,cc',','))@
RESULT
--------------------
SQL0347W 递归公共表表达式 "TEST.N" 可能包含无限循环。 SQLSTATE=01605
aa
bb
cc
已选择 3 条记录,打印 1 条警告消息。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯