zoukankan      html  css  js  c++  java
  • 逗号分隔的字符串转换为行数据(collection)(续)

    逗号分隔的字符串转行数据的存储过程一个:

    CREATE OR REPLACE FUNCTION SP_YX_SPLIT
    (
        p_list CLOB, 
        p_sep VARCHAR2 := ','
    ) 
    RETURN tabletype
    PIPELINED 
    /************************************** 
    * Name: split 
    * Author: zhaoqiang. 
    * Date: 2014-10-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;

    2,调用存储过程方法,获取转化后的行数据(collection)

    select SP_YX_SPLIT('2,43,43,43',',') from dual

    打开Collection,可看到是这个字段是一个只有一列的列名为COLUMN_VALUE的表。

    3,得到的这个值,因为是collection,不能直接使用。例如:

    4,所以必须先把这个语句转化成Table类型。然后,当作一个表Table使用,通过COLUMN_VALUE获取里面的值。

    5,使用表,获取值。

    where gs.movetypeid='201' and gs.createdate between '20161203' and '20161203'   
    and gs.customerid='00010'
    and m1.materialsortid in (SELECT COLUMN_VALUE FROM table ((select SP_YX_SPLIT('00000000000000001283,00000000000000000714',',') from dual)))
  • 相关阅读:
    ci框架与smarty的整合
    jQuery 1.3.2 简单实现select二级联动
    Nginx配置https
    tp5.1最新的类库使用规则
    Linux指令大全
    Redis锁机制处理高并发
    Nginx配置https站点
    vue的入门
    HTTP 请求头中的 X-Forwarded-For,X-Real-IP
    Composer包制作以及发布!
  • 原文地址:https://www.cnblogs.com/alsf/p/6128837.html
Copyright © 2011-2022 走看看