CREATE OR REPLACE TYPE TYPE_SPLIT as table of varchar2(200);create or replace function f_split(p_list varchar2, p_sep varchar2 := ‘,‘) return TYPE_SPLIT pipelined is l_idx pls_integer; v_list varchar2(200) := 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,...
1.创建一个表类型tabletype: createorreplace type tabletype astableofVARCHAR2(32676); 2.创建split 函数CREATEORREPLACEFUNCTION split (p_list CLOB, p_sep VARCHAR2 :=‘,‘)
RETURN tabletype
PIPELINED
IS/*
* 2015-11-11
* Function: 返回字符串被指定字符分割后的表类型。
* Parameters: p_list: 待分割的字符串。
p_sep: 分隔符,默认逗号,也可以指定字符或字符串。 */l_idx PLS_INTEGER;
v_list VARCHAR2 (32676) ...
一、instr()函数:字符查找函数语法:instr(string, str) -- instr(源字符串, 目标字符串)
instr(string, str, start_position, nth_appearance) -- instr(源字符串, 目标字符串, 起始位置, 匹配序号)
注:在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束。实例:select instr(‘hello‘, ‘l‘) from dual; -- 3 默认第1次出现的位置
select instr(‘hel...
select split(‘a,b,c,e,d,f,g‘) arrData from dual;
默认使用逗号分割,可以自定义修改,如:select split(‘X-rapido & Lemon‘,‘&‘) arrData from dual;点开集合默认使用逗号分割,可以自定义修改,如:select split(‘X-rapido & Lemon‘,‘&‘) arrData from dual;
示例:splitstr(字符串,获取的节点下标,分隔符)
select splitstr(‘X-rapido&Lemon&Jennifer‘, 1, ‘&‘) word from dual; -- X-rapido
select splits...
tabletype: create or replace type tabletype as table of VARCHAR2(32676);
2.创建split 函数CREATE OR REPLACE FUNCTION split (p_list CLOB, p_sep VARCHAR2 := ‘,‘)
RETURN tabletype
PIPELINED
IS
/*
* 2015-11-11
* Function: 返回字符串被指定字符分割后的表类型。
* Parameters: p_list: 待分割的字符串。
p_sep: 分隔符,默认逗号,也可以指定字符或字符串。 */l_idx PLS_INTEGER;
v_list VARCHAR2 (32676) := p_...
转载1.针对 ‘1‘,‘2‘,‘3‘,‘4‘,‘5‘(逗号在字符串外面) SQL> SELECT COLUMN_VALUE FROM TABLE(SYS.ODCIVARCHAR2LIST(‘1‘,‘2‘,‘3‘,‘4‘,‘5‘));
COLUMN_VALUE
--------------------------------------------------------------------------------
1
2
3
4
5 2.针对‘1,2,3,4,5‘(逗号在字符串里面) SQL> select regexp_substr(‘1,2,3,4,5‘,‘[^,]+‘,1,rownum) from dual
2 connect ...
* from table(fun_strsplit(‘1,2,3,4,5‘));
1、创建一个类型CREATE OR REPLACE TYPE Strsplit_Type IS TABLE OF VARCHAR2(4000)
2、创建函数CREATE OR REPLACE FUNCTION Fun_Strsplit(p_Value VARCHAR2,p_Split VARCHAR2 := ‘,‘)
--usage: select * from table(fun_strsplit(‘1,2,3,4,5‘))RETURN Strsplit_TypePIPELINED ISv_Idx INTEGER;v_Str VARCHAR2(500);v_Strs_Last VARCHAR2(4000) := p_Value;BEGINLO...
type tabletype is table of varchar2(3000);CREATE OR REPLACE FUNCTION split(p_list CLOB, p_sep VARCHAR2 := ‘,‘)RETURN tabletypePIPELINED
/*************************************** Name: split* Function: 返回字符串被指定字符分割后的表类型。* Parameters: p_list: 待分割的字符串。p_sep: 分隔符,默认逗号,也可以指定字符或字符串。**************************************/ISl_idx PLS_INTEGER;v_list VARCHAR2...
‘one,two,three,four,five,six,seven,eight,nine,zero‘ as source_string from dual), -- 统计字符串中子串的个数,用 ‘,‘ 来划分子串
T2 as( select regexp_count(source_string, ‘[^,]+‘) as source_substring_count from T1), -- 根据子串的个数创建索引列,用于给T4的regexp_substr()方法索引
T3 as( select rownum as row_number from dual, T2 connect by rownum <= T2.source_substring_count), -- 根据...
-06-08 18:46:13,422 INFO [main] org.apache.sqoop.mapreduce.db.DBRecordReader: Executing query: select "JFRQ","ZYH","FYKS","KSSE","YBJE","YPJE","ZJJE" from BSHIS."DEPCS_T_DEPCS_BRMXCOST_DAY" tbl where ( JFRQ >= ‘2009-01-01 00:00:00.0‘ ) AND ( JFRQ < ‘2009-10-13 04:00:00.0‘ )
2017-06-08 18:46:13,439 ERROR [main] org.apache.sqoop.mapreduce.db.DBRecordReader: Top level exception:
java.sql.SQLData...
create or replace FUNCTION fn_rme_split(p_str IN VARCHAR2,2 p_delimiter IN VARCHAR2)3 RETURN rme_split4 PIPELINED IS5 j INT := 0;6 i INT := 1;7 len INT := 0;8 len1 INT := 0;9 str VARCHAR2(4000);
10 BEGIN
11 len := LENGTH(p_str);
12 len1 := LENGTH(p_delimiter);
13
14 WHILE j < len LOOP
15 j := INSTR(p_str, p_delimiter, ...
PL/SQL 中没有split函数,需要自己写。 代码: createorreplacetypetype_splitastableofvarchar2(50);--创建一个 type ,如果为了使split函数具有通用性,请将其size设大些。 --创建function createorreplacefunctionsplit ( p_listvarchar2, p_sepvarchar2:
PL/SQL 中没有split函数,需要自己写。
代码:create or replace type type_split as table of varchar2(50); --创建一个 type ,如果为了使split函数具有通用性,请...
最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理。 以往的处理方式有如下几种: 1、在存储过程内写循环,逐个分析字符串中的ID,然后逐个处理。缺点:循环一次处理一个,如果每次判断都很多,效率将很受影响。适合每次处理要做...
Oracle索引分裂(Index Block Split)索引分裂:index block split : 就是索引块的分裂,当一次DML 事务操作修改了索引块上的数据,但是旧有的索引块没有足够的空间去容纳新修改的数据,那么将分裂出一个新的索引块,旧有块的部分数据放到新开辟的索引块上去.分裂的类型:根节点分裂,分支节点分裂,叶节点分裂(最频繁发生,对性能影响最直接)按照数据迁移量的比例,将索引分裂分为两种类型:9-1分裂和5-5分裂.9-1分裂:绝大部分...
? ? ? ? ? ?题目 ? ? ? ? 部分在Oracle中,使用SPLIT来拆分某个分区的时候,其拆分出来的新分区的统计信息行数是多少?? ? ?? ? ? ? ? ?答案部分 ? ? ? ? ?在分区分裂时,新分区的统计信息会继承原分区的统计信息值。若原分区的统计信息为空,则新分裂出来的分区统计信息也为空。所以,建议对SPLIT出来的新分区重新收集统计信息。收集分区表某个分区的SQL如下所示:1DBMS_STATS.GATHER_TABLE_STATS(USER,TB_NAME,PARTNAME=>PT_PART...