Oracle使用split和splitstr函数批量分隔字符串
2013-12-23 15:26
302 查看
原文链接:https://www.geek-share.com/detail/2598783563.html
/* * Oracle 创建 split 和 splitstr 函数 */ /* 创建一个表类型 */ create or replace type tabletype as table of VARCHAR2(32676) / /* 创建 split 函数 */ CREATE OR REPLACE FUNCTION split (p_list CLOB, p_sep VARCHAR2 := ',') RETURN tabletype PIPELINED /************************************** * Name: split * Author: Sean Zhang. * Date: 2012-09-03. * Function: 返回字符串被指定字符分割后的表类型。 * Parameters: p_list: 待分割的字符串。 p_sep: 分隔符,默认逗号,也可以指定字符或字符串。 * Example: SELECT * FROM users WHERE u_id IN (SELECT COLUMN_VALUE FROM table (split ('1,2'))) 返回u_id为1和2的两行数据。 **************************************/ IS l_idx PLS_INTEGER; v_list VARCHAR2 (32676) := p_list; BEGIN LOOP l_idx := INSTR (v_list, p_sep); IF l_idx > 0 THEN PIPE ROW (SUBSTR (v_list, 1, l_idx - 1)); v_list := SUBSTR (v_list, l_idx + LENGTH (p_sep)); ELSE PIPE ROW (v_list); EXIT; END IF; END LOOP; END; / /* 创建 splitstr 函数 */ CREATE OR REPLACE FUNCTION splitstr (str IN CLOB, i IN NUMBER := 0, sep IN VARCHAR2 := ',' ) RETURN VARCHAR2 /************************************** * Name: splitstr * Author: Sean Zhang. * Date: 2012-09-03. * Function: 返回字符串被指定字符分割后的指定节点字符串。 * Parameters: str: 待分割的字符串。 i: 返回第几个节点。当i为0返回str中的所有字符,当i 超过可被分割的个数时返回空。 sep: 分隔符,默认逗号,也可以指定字符或字符串。当指定的分隔符不存在于str中时返回sep中的字符。 * Example: select splitstr('abc,def', 1) as str from dual; 得到 abc select splitstr('abc,def', 3) as str from dual; 得到 空 **************************************/ IS t_i NUMBER; t_count NUMBER; t_str VARCHAR2 (4000); BEGIN IF i = 0 THEN t_str := str; ELSIF INSTR (str, sep) = 0 THEN t_str := sep; ELSE SELECT COUNT ( * ) INTO t_count FROM table (split (str, sep)); IF i <= t_count THEN SELECT str INTO t_str FROM (SELECT ROWNUM AS item, COLUMN_VALUE AS str FROM table (split (str, sep))) WHERE item =< 3ff7 /span> i; END IF; END IF; RETURN t_str; END; /
转载于:https://www.cnblogs.com/bdzwater/p/3487514.html
相关文章推荐
- Oracle使用split和splitstr函数批量分隔字符串
- Oracle使用split和splitstr函数批量分隔字符串
- Java中使用split分隔字符串
- oracle拆分逗号分隔字符串 实现split
- C#中使用Split分隔字符串的技巧
- C#中使用Split分隔字符串的技巧 (转自百度文库)
- ” Java中使用split分隔字符串
- C#中使用Split分隔字符串的技巧
- C#中使用Split分隔字符串的技巧
- oracle中PLSQL存储过程中如何使用逗号分隔的集合(逗号分隔字符串转换为一个集合)
- oracle 存储过程 字符串分隔 FUNC_GETSPLITSTR
- oracle字符串分隔函数split
- 使用split分隔字符串
- oracle 拆分逗号分隔字符串 实现split
- oracle拆分逗号分隔字符串 实现split
- oracle拆分逗号分隔字符串 实现split[转]
- Python使用split使用多个字符分隔字符串
- C#中使用Split分隔字符串
- C#中使用Split分隔字符串的技巧
- Python使用split使用多个字符分隔字符串