oraclesplit()函数 1create type tabletype is table of varchar2(3000);
2CREATE OR REPLACE FUNCTION split (p_list CLOB, p_sep VARCHAR2 :=',')
3RETURN tabletype
4 PIPELINED
5/**************************************
6* Name: split
7* Author: Sean Zhang.
8* Date: 2012-09-03.
9* Function: 返回字符串被指定字符分割后的表类型。
10* Parameters: p_list: 待分割的字符串。
11p_sep: 分隔符,默认逗号,也可以指定字符或字符串。
12* Example: SELECT *
13FROM users
14WHERE u_id IN (SELECT COLUMN_VALUE
15FROM table (split ('1,2')))
16返回u_id为1和2的两⾏数据。
17**************************************/
18IS
19 l_idx PLS_INTEGER;
20 v_list VARCHAR2 (32676) := p_list;
21BEGIN
22 LOOP
23 l_idx := INSTR (v_list, p_sep);
24IF l_idx >0
oracle切割字符串函数25THEN
26PIPE ROW (SUBSTR (v_list, 1, l_idx -1));
27 v_list := SUBSTR (v_list, l_idx + LENGTH (p_sep));
28ELSE
29PIPE ROW (v_list);
30EXIT;
31END IF;
32END LOOP;
33END;
-
-test code
select*from table(split('1,2,3,4,5,6',','));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论