以下的文章主要描述的是DB2 实现split的实际操作流程,假如你对DB2 实现split的实际操作流程有兴趣了解的话,你就可以通过以下的文章对其有个更好的了解,以下就是具体方案的描述,希望在你今后的学习中会有所帮助。
我们提供的服务有:成都网站设计、做网站、成都外贸网站建设公司、微信公众号开发、网站优化、网站认证、沂南ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的沂南网站制作公司
请教大家一个问题,用函数实现split功能,分割字符串。
如 输入字符串为 'a,b,c',
实现输出结果为第一行 a
第二行 b
第三行 c
求具体的DB2 实现函数。
另附 oracle的实现方法为:
- CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);
- CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)
- RETURN ty_str_split
- IS
- j INT := 0;
- i INT := 1;
- len INT := 0;
- len1 INT := 0;
- str VARCHAR2 (4000);
- str_split ty_str_split := ty_str_split ();
- BEGIN
- len := LENGTH (p_str);
- len1 := LENGTH (p_delimiter);
- WHILE j < len
- LOOP
- j := INSTR (p_str, p_delimiter, i);
- IF j = 0
- THEN
- j := len;
- str := SUBSTR (p_str, i);
- str_split.EXTEND;
- str_split (str_split.COUNT) := str;
- IF i >= len
- THEN
- EXIT;
- END IF;
- ELSE
- str := SUBSTR (p_str, i, j - i);
- i := j + len1;
- str_split.EXTEND;
- str_split (str_split.COUNT) := str;
- END IF;
- END LOOP;
- RETURN str_split;
- END fn_split;
- /
测试: SELECT * FROM TABLE (fn_split ('a,b,c', ',') );
结果:
a
b
c
最佳答案 leo
可以写个udf 来进行分割, 但我更喜欢使用sql:
- with n(str, ori, pos) as (
- values ('abc,bc,cd,d,ff,', 1, posstr('abc,bc,cd,d,ff,', ','))
- union all
- select str, pos+1, locate(',', str, pos+1)
- from n
- where locate(',', str, pos+1)>0)
- select str, ori, pos, substr(str, ori, pos-ori) as result from n
可以写个udf 来进行分割, 但我更喜欢使用sql:
- with n(str, ori, pos) as (
- values ('abc,bc,cd,d,ff,', 1, posstr('abc,bc,cd,d,ff,', ','))
- union all
- select str, pos+1, locate(',', str, pos+1)
- from n
- where locate(',', str, pos+1)>0)
- select str, ori, pos, substr(str, ori, pos-ori) as result from n
以上的相关内容就是对DB2 实现split的介绍,望你能有所收获。
本文题目:对DB2实现split的操作流程描述
浏览路径:http://www.shufengxianlan.com/qtweb/news27/498427.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联