IBM DB2 SQL SPLIT 分割字符串
来源:互联网 发布:人工智能与伦理学 编辑:程序博客网 时间:2024/04/28 10:48
--字符串‘ab cd ab' 按空格 分开为ab cd ab
--select * from table (fc_splitstr(‘ab cd ab' ,' '));
/* 得到结果
ab
cb
ab
*/
-- Start of generated script for 10.1.3.12-fisprc-FQIPDB (fqip)
-- Aug-02-2013 at 14:51:20
SET SCHEMA FQIP;
SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","FQIP";
CREATE FUNCTION "FQIP"."FC_SPLITSTR"
("SRCSQL" VARCHAR(8000), --字符串
"SPT" VARCHAR(100) --空格
)
RETURNS TABLE
("RE" VARCHAR(800)
)
SPECIFIC "FQIP"."SQL130801155011000"
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DATA
STATIC DISPATCH
CALLED ON NULL INPUT
EXTERNAL ACTION
INHERIT SPECIAL REGISTERS
BEGIN ATOMIC
return with n(str, ori, pos) as (
values (srcsql||spt, 1,locate(spt,srcsql||spt))
union all
select str, pos+length(spt), locate(spt, str, pos+length(spt))
from n
where locate(spt, str,pos+length(spt))>0)
select substr(str, ori, pos-ori) as result
from n;
END;
--使用案例
-- Start of generated script for 10.1.3.12-fisprc-FQIPDB (fqip)
-- Aug-02-2013 at 10:15:01
DROP PROCEDURE "COGNOSTEST2";
#SYNC 10;
SET SCHEMA FQIP ;
SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","FQIP";
CREATE PROCEDURE "FQIP"."COGNOSTEST2"
(IN "INDATA" VARCHAR(100),
OUT "PO_S_STMT" VARCHAR(32672)
)
--SPECIFIC "FQIP"."SQL130801160546200"
LANGUAGE SQL
NOT DETERMINISTIC
CALLED ON NULL INPUT
EXTERNAL ACTION
OLD SAVEPOINT LEVEL
MODIFIES SQL DATA
INHERIT SPECIAL REGISTERS
BEGIN
declare SQLCODE INT DEFAULT 0;
DECLARE SQLSTATE CHAR(5);
DECLARE new_culown varchar(4000);
DECLARE new_case varchar(4000);
DECLARE last_case varchar(4000);
DECLARE newsql varchar(4000);
DECLARE v_iquestionid varchar(200);
DECLARE v_ianswerid varchar(200);
DECLARE at_end INT DEFAULT 0;
DECLARE at_end2 INT DEFAULT 0;
DECLARE v_Q10049 varchar(200);
DECLARE v_VALUE varchar(200);
DECLARE c_VALUE varchar(200);
DECLARE Stmt varchar(4000) DEFAULT '';--参数SQL
DECLARE Stmt0 varchar(4000) DEFAULT '';--参数SQL
DECLARE IN1 varchar(4000) DEFAULT '';
-- DECLARE IN2 varchar(4000) DEFAULT '';
--SET IN1=INDATA;
DECLARE C1 CURSOR FOR S;
DECLARE C2 CURSOR FOR select * from table (fc_splitstr(v_VALUE,','));
DECLARE v_cs_getrptdata cursor with return for v_st;--返回结果集
set new_case='';
-- set newsql = 'DELETE FROM TEST ';
--EXECUTE immediate newsql;
set Stmt0='SELECT '|| INDATA||' FROM MAN_DC_FACT where '|| INDATA||' <> ''0'' ';
-- values(Stmt) into po_s_Stmt;
prepare S from Stmt0;
-- open v_cs_getrptdata;
open C1;
set at_end = 0;
while at_end = 0 do
fetch C1 into v_Q10049;
if SQLCODE = 0 then
set v_VALUE=v_Q10049;
open C2 ;
FETCH C2 INTO c_VALUE;
WHILE ( SQLSTATE = '00000' ) DO
set newsql = 'insert into TEST VALUES ('||c_VALUE||' )';
EXECUTE immediate newsql;
FETCH C2 INTO c_VALUE;
END WHILE;
-- PREPARE s1 from newsql;
-- EXECUTE s1 ;
close c2;
else
set at_end = 1;
end if;
end while;
close C1;
set Stmt='select V,COUNT(0) COUNT from TEST GROUP BY V ';
values(Stmt) into po_s_Stmt;
prepare v_st from Stmt;
open v_cs_getrptdata;
END;
#SYNC 20;
-- End of generated script for 10.1.3.12-fisprc-FQIPDB (fqip)
- IBM DB2 SQL SPLIT 分割字符串
- sql 分割字符串split
- SQL 字符串分割函数 split
- SQL分割字符串 类似 C# Split
- SPLIT分割字符串
- [转]Split 分割字符串
- split来分割字符串
- split()方法分割字符串
- split分割字符串
- split分割字符串
- split正则分割字符串
- StringUtils 分割字符串 split
- StringUtils 分割字符串 split
- Boost字符串分割split
- split字符串分割函数
- 字符串分割split()
- String.split() 字符串分割
- 王立平--split字符串分割
- 【xtku】教你用VOLANS路由器自带功能抗攻击
- 三层转发
- java.util.List里的subList方法使用
- web项目启动时,配置达到启动项目就可以执行任务的目的....
- C# 类中继承接口的属性
- IBM DB2 SQL SPLIT 分割字符串
- 修改linux最大socket连接数
- Activity的四种启动模式
- iOS_使用ARC需要注意的问题
- 单元格动态背景色
- 页面右下角弹出提示框 js版
- javascript Date format(js日期格式化)
- 问题解决的文章链接
- RHEL6.3_x86_64 下源码安装Apache(2.2.5)MySQL(5.5.25a) PHP(5.2.17)