在PLSQL中实现分割字符串
来源:互联网 发布:sql 相同id 合并字段 编辑:程序博客网 时间:2024/06/17 04:23
首先在SQL窗口创建table类型变量,用来声明函数返回的数组类型:
/*变量类型声明*/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); /*INSTR(x, find_string [, start] [, occurrence]);搜索find_string在x中并返回它出现的位置*//*如果String2在String1中没有找到,instr函数返回0*/ IF j = 0 THEN j := len; /*j等于待分割的字符串最后一个位置*/ str := SUBSTR (p_str, i); /*str等于将待分割字符串从i位置分割到结束位置*/ /*添加到数组*/ str_split.EXTEND; str_split (str_split.COUNT) := str; /*数组.count可以获取到数组实际长度*/ /*i代表待分割的字符串开始分割的位置,len代表待分割字符串长度或结束位置,如果待分割的字符串开始分割的位置>=待分割字符串长度或结束位置则分割结束,退出循环*/ IF i >= len THEN EXIT; END IF; ELSE str := SUBSTR (p_str, i, j - i); /*SUBSTR(x, start [, length]); 返回x的一个子开始于由start指定的位置。可选长度为子字符串*/ /*i变成j+分割符长度的位置*/ i := j + len1; /*添加到数组*/ str_split.EXTEND; str_split (str_split.COUNT) := str; END IF; END LOOP; RETURN str_split; END fn_split;
测试代码:
/*测试代码*/declare -- Non-scalar parameters require additional processing s ty_str_split; len INTEGER;begin -- Call the function s := fn_split('1,2,3',','); len :=s.count; dbms_output.put_line('数组长度:'||len); FOR i IN 1..len LOOP dbms_output.put_line(s(i)); END LOOP; end;输出:
参考易百教程
阅读全文
0 0
- 在PLSQL中实现分割字符串
- 在J2ME程序中实现字符串分割
- 在sql中实现字符串分割(函数)
- 在shell中如何分割字符串
- 在Java中怎样用split分割字符串
- MySQL中实现分割字符串的方法
- MFC中实现字符串的分割
- Android 中StringTokenizer 实现字符串分割
- MySQL中实现分割字符串的方法
- python中split实现字符串分割方法
- MySQL中实现分割字符串的方法
- C++中实现字符串分割方法
- JS实现Split分割字符串同时允许被分割出的字符串中存在分割符号
- PLSQL实现字符串排序
- StringTokenizer实现字符串分割
- c++实现字符串分割
- Matlab实现字符串分割
- CString分割字符串实现
- JSON解析
- makefile介绍
- 深入理解ThreadLocal
- 返回值data引发的小白事件
- HDU
- 在PLSQL中实现分割字符串
- 创建Maven出错
- idea
- 数字图像处理matlab版第五章
- Microsoft Visual Studio 2013
- Mysql| Mysql常用函数汇总
- java自己实现的httpserver
- 第二章问题回答
- 例子:面对对象