`
thinktothings
  • 浏览: 777597 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

字符串分隔

阅读更多

一、场景,如:86134-86139;86158

 

分隔成:

             86134

             86135  

             86136 

             86137

             86138

             86139

             86158

 

 

 

解决方案:

 

1、

	CREATE OR REPLACE TYPE split_type IS TABLE OF VARCHAR2 (4000);

 

 2、

  CREATE OR REPLACE FUNCTION split (
	    p_str       IN VARCHAR2,        --传入字符串如:86134-86138
	    p_delimiter IN VARCHAR2 default(','), --分隔符,默认逗号
      p_join IN VARCHAR2 default('-') --连接符,默认减号
	)
	    RETURN split_type
	IS
      join_index INT :=0; --如86134-86138  -的索引
	    j INT := 0;  --;所有的索引
	    i INT := 1;  --开始索引
	    len INT := 0;
	    len1 INT := 0;
	    str VARCHAR2 (4000);
	    my_split split_type := split_type ();
	BEGIN
	    len := LENGTH (p_str);
	    len1 := LENGTH (p_delimiter);
	 
	    WHILE j < len
	    LOOP
	        j := INSTR (p_str, p_delimiter, i);
	 
	        IF j = 0
	        THEN
	            j := len;
	             str := SUBSTR (p_str, i);
	            
              join_index:=INSTR(str,p_join);
              /****判断prefix中是否存在减号*******/
              if join_index=0   --没有连续号,直接插入
              then
                    my_split.EXTEND;
	                  my_split (my_split.COUNT) := str;
              else     --有连续号,分开插入
                    For v In SUBSTR(str,1,join_index-1)..SUBSTR(str,join_index+1) Loop
                    --Dbms_Output.Put_Line(v);
                     my_split.EXTEND;
	                  my_split (my_split.COUNT) := v;
           
                    end loop;

              end if;
              
	 
	            IF i >= len
	            THEN
	                EXIT;
	            END IF;
	        ELSE
	            str := SUBSTR (p_str, i, j - i);
	            i := j + len1;
              join_index:=INSTR(str,p_join);
                /****判断prefix中是否存在减号*******/
              if join_index=0  --没有连续号,直接插入
              then   
                    my_split.EXTEND;
	                  my_split (my_split.COUNT) := str;
              else    --有连续号,分开插入
                    For v In SUBSTR(str,1,join_index-1)..SUBSTR(str,join_index+1) Loop
                    --Dbms_Output.Put_Line(v);
                     my_split.EXTEND;
	                  my_split (my_split.COUNT) := v;
           
                    end loop;

              end if;
             
             
	        END IF;
	    END LOOP;
	 
	    RETURN my_split;
	END split;
	/

 3、测试:

 

  select * from table (split('86158;86134-86139;86182;',';','-'));

 4、结果:

86158
86134
86135
86136
86137
86138
86139
86182
 

 

分享到:
评论

相关推荐

    db2字符串分隔,函数,过程的使用

    以下将详细介绍DB2中用于字符串分隔、函数及过程的使用。 1. 字符串分隔函数: 在DB2中,最常用的字符串分隔函数是`STRIP()`和`TOKENIZE()`。`STRIP()`函数用于去除字符串两端或内部的空格或指定字符。例如,`...

    vb字符串分隔与合并的程序实例

    字符串分隔和合并是两个关键的操作,它们在处理文本数据时起到至关重要的作用。在这个“vb字符串分隔与合并的程序实例”中,我们将探讨如何使用VB来执行这些操作,并了解如何通过源码实现对大量数据的统计和处理。 ...

    sqlserver字符串分隔与拼接实例[归类].pdf

    SQL Server 字符串分隔与拼接实例 本文将为读者详细讲解 SQL Server 中字符串分隔与拼接的实例,包括创建函数、使用字符串函数 CHARINDEX 和 STUFF 等知识点。 字符串分隔与拼接实例 在实际应用中,我们经常需要...

    字符串分隔(C#).txt

    ### 字符串分隔在C#中的应用 #### 概述 在计算机编程语言中,字符串处理是一项非常常见的任务。特别是在C#这种广泛应用于Windows应用程序开发的语言中,字符串的分割功能尤为重要。本篇文章将深入探讨如何在C#中...

    字符串分隔工具

    标题中的“字符串分隔工具”指的是一个用于处理和操作字符串的程序或库,它能够将一个长字符串按照特定的分隔符切割成多个子字符串。这样的工具在编程中非常常见,尤其是在数据分析、文本处理和日志分析等领域。下面...

    java字符串分隔类

    ### Java字符串分隔类——StringTokenizer的使用方法详解 在Java编程中,处理字符串是非常常见的需求之一,特别是在数据解析、格式化输出等场景下。`StringTokenizer`类作为Java标准库的一部分,为开发者提供了一种...

    正则字符串分隔显示

    在本案例中,"正则字符串分隔显示"是指利用正则表达式来分割字符串,并将结果展示出来。这通常涉及到编程语言中的字符串处理函数,如JavaScript的`split()`、C#的`Regex.Split()`或者Python的`re.split()`等。 正则...

    VB源码:字符串分隔与合并的程序实例.rar

    1. 字符串分隔: 在VB中,我们通常使用`Split()`函数来分隔字符串。这个函数将一个字符串按照指定的分隔符切分为多个子字符串,返回一个数组。例如,如果有一个字符串`str = "apple,banana,orange"`,我们可以使用...

    华为-华为od题库练习题之字符串分隔.zip

    【标题】"华为-华为od题库练习题之字符串分隔.zip" 提供的资源是华为OD(Organizational Development,组织发展)题库中的一个专项练习,主要关注字符串处理技术。这个压缩包可能包含了多个练习题目,旨在帮助学习者...

    一个字符串分隔多个参数存储过程调试

    标题中的“一个字符串分隔多个参数存储过程调试”指的是在数据库管理中,如何处理一个包含多个用特定字符分隔的参数字符串,并在存储过程中进行有效的调试。这通常涉及到字符串操作函数和存储过程的编写技巧。 在...

    字符串按指定的字符串进行分隔

    字符串按指定的字符串进行分隔是一项常见的操作,它可以帮助我们解析和分析数据。本篇将详细探讨如何在C++中实现这一功能,同时涵盖指针和字符串处理的相关知识。 首先,当我们知道分隔符的数量时,可以使用`strtok...

    如何实现Oracle中字符串分隔.pdf

    本文将详细介绍如何在Oracle中实现字符串分隔,以及提供一个实用的面向对象的解决方案。 在Oracle中,字符串分隔通常涉及到将一个长字符串按照特定的分隔符切割成多个子字符串。Oracle提供了多种函数来实现这一功能...

    Java字符串分隔方法split实践

    这个方法允许我们根据特定的分隔符将一个字符串分割成多个子字符串,这对于数据解析、格式转换等场景非常有用。在本文中,我们将深入探讨`split()`方法的实践应用。 `split()`方法位于`java.lang.String`类中,它的...

    MySql函数-取一个字符串分隔后指定位置的子字符串

    一、函数功能:对字符串进行分隔数组,取指定顺序位置的子字符串,支持左右双向获取,支持默认值返回,附有测试用例 二、函数格式:fn_get_split_val(in_str varchar,in_delimiter varchar,in_order int,in_default ...

    字符串分隔C语言实现支持 GB2312, GBK, GB18030

    字符串分隔C语言实现支持

    字符串分割的字符串数量 SQL

    本篇文章将详细介绍如何利用SQL语言实现这一功能,具体来说是如何编写一个SQL函数来计算给定字符串中由特定分隔符分隔出的子字符串的数量。 #### 题目背景 在实际应用场景中,有时会遇到存储了多个值的字符串字段...

    Python 算法 字符串分隔.py

    Python 算法 字符串分隔.py

Global site tag (gtag.js) - Google Analytics