`

oracle splitstr 函数

 
阅读更多
splitstr函数
CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
    RETURN str_split  PIPELINED
AS
    v_length   NUMBER := LENGTH(p_string);
    v_start    NUMBER := 1;
    v_index    NUMBER;
BEGIN
    WHILE(v_start <= v_length)
    LOOP
        v_index := INSTR(p_string, p_delimiter, v_start);

        IF v_index = 0
        THEN
            PIPE ROW(SUBSTR(p_string, v_start));
            v_start := v_length + 1;
        ELSE
            PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));
            v_start := v_index + 1;
        END IF;
    END LOOP;

    RETURN;
END splitstr;


使用splitstr函数

    SELECT COLUMN_VALUE FROM TABLE(SPLITSTR('1,9', ',')) ;


假如表A的一列数据有A1,A2等分隔符分开 此时需要对表A的这个字段进行统计

--id中的值可能有1,2 1 2 等
SELECT 
  R.NAME ,
  SUM(DECODE(E.STATUS,1,1,0)) AS 状态为1的总数,
  SUM(DECODE(E.STATUS,2,1,0)) AS 状态为2的总数
  FROM A E, 字典表 R
 WHERE EXISTS (SELECT COLUMN_VALUE
          FROM TABLE(SPLITSTR(E.id, ',')) it
         WHERE it.column_value = r.id)
GROUP BY R.NAME;


分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    添加split和splitstr函数-oracle培训.pdf

    。。。

    添加split和splitstr函数-oracle培训.docx

    。。。

    SQL实现字符串拆分2函数:splitstr,GetCharItem

    select * from dbo.splitstr('a,b,c,d,e') --返回表格 a b c d e --用处 select * from tbtable where ZID in (select ZValue from dbo.splitstr('a,b,c,d,e')) --用法 select dbo.GetCharItem('A,B,C,DE,F,GH',',...

    oracle字符串分割自定义函数

    oracle中没有方便分割字符串的的函数,仿照c#中的split方法和网友的方法,并进行了改进,(1)先自定义个类型str_split,(2)分割函数splitstr,返回table;(3)取第n个数组的get_splitstr,用户1,2,3部建好,使用时只需要...

    给Oracle添加split和splitstr函数的方法

    最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理

    f_splitstr(分割字符串).sql

    f_splitstr(分割字符串),根据业务可自行设定需要分割的字符串。

    oracle 函数判断字符串是否包含图片格式的实例代码

    首先是写一个分割字符串的函数,返回table类型 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...

    sqlserver自定义函数

    create function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(100)) returns @temp table(F1 varchar(100)) as begin declare @ch as varchar(100) set @SourceSql=@SourceSql+@StrSeprate ...

    SQL Server分隔函数实例详解

    有时候我们在SQL Server中需要对一些字符串进行分隔,比如a,b,c ,按照‘,’进行分割,可以使用下边这个函数方法,新建方法如下:  CREATE FUNCTION dbo.f_splitstr(@SourceSql NVARCHAR(MAX),@StrSeprate VARCHAR...

    sql函数和事务

    CREATE FUNCTION SplitStr (@splitString varchar(8000), @separate varchar(10)) RETURNS @returnTable table(id int, col_Value varchar(50)) AS BEGIN declare @thisSplitStr varchar(50) declare @...

    SQL Server分隔函数

    有时候我们在SQL Server中需要对一些字符串进行分隔,比如a,b,c ,按照‘,’进行分割,可以使用下边这个函数方法,新建方法如下:  CREATE FUNCTION dbo.f_splitstr(@SourceSql NVARCHAR(MAX),@StrSeprate VARCHAR...

    netDxf的扩展示例

    String[] splitstr = lines.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries); //Console.WriteLine("Length=" + splitstr.Length); for (int i = 0; i &lt; splitstr.Length; i++) { ...

    vb网页功能操作.doc

    一、提取网页源码函数 -------------------------------- 在 VB 中,可以使用 Microsoft.XMLHTTP 对象来提取网页源码。下面是一个简单的函数示例: ```vb Public Function HtmlStr$(URL$) Dim XmlHttp Set ...

    Delphi 版 HTML5 WebSocket Server 代码

    即调用下面的ShakeHand函数。如果不是#0,则为连接后的数据信息,请自行解析。 参数:接收到的数据和长度。 返回:HTML5 Client的IP地址和端口。 代码中包括: HTML5 WebSocket 握手协议的说明及解析代码; ...

    c# 字符串操作类

    /// /// 字符串操作类 /// 1、GetStrArray(string str, char speater, bool ... /// 13、SplitMulti(string str, string splitstr)分割字符串 /// 14、SqlSafeString(string String, bool IsDel) /// 等操作

    sql 分割字符串 dbo.Split('',',')

    将字符串按某个固定字符拆分成一个表结构(value,id) eg:1,2,3,3,4 拆分后: value id 1 1 2 2 3 3 3 4 4 5

    splitStrJS:多个分隔符作为数组拆分字符串功能(它既支持数组作为分隔符,也支持一个分隔符作为字符串)

    这些函数位于splitStr.js中,您可以复制它们以使用它们,或者将其作为模块使用,写回导出方法,具体取决于您所处的上下文,节点是否已经完成,es2015是否可以使用导出默认值和导入语句。 选择适合您的功能。 test....

    StringTokenizer的使用

    if(splitStr==null||splitStr.trim().equals("")){ splitStr=" "; } StringTokenizer st = new StringTokenizer(str, splitStr,false); System.out.println("ArraySize:"+st.countTokens()); arr...

Global site tag (gtag.js) - Google Analytics