• Oracle 字符串转表


    创建自定义类型:
    CREATE OR REPLACE TYPE "T_STRLIST" as Table of Varchar2(4000)

    建转换方法:
    CREATE OR REPLACE Function fun_Str2list
    (
    Str_In In Varchar2,
    Split_In In Varchar2 := ','
    ) Return t_Strlist
    Pipelined As
    v_Str Long;
    P Number;
    --功能:将由逗号分隔的不带引号的字符序列转换为单列数据表
    --参数:STR_IN,如:G0000123,G0000124,G0000125...,SPLIT_IN,分隔符,缺省为,号
    --说明:
    --1.当SQL语句中涉及“IN(常量1, 常量2,…) ”子句时使用这种方式以便利用绑定变量。
    --2.使用这两个函数时,需要在SQL语句中加入“/+ cardinality(b 3)/”提示,因为CBO下临时内存表没有统计数据,。
    --3.两种调用示例
    --SELECT /+ cardinality(b 3)/ * FROM 门诊费用记录 WHERE NO IN (SELECT * FROM TABLE(F_STR2LIST('A01,A02,A03')) B);
    --SELECT /+ cardinality(b 3)/ A.* FROM 门诊费用记录 A, TABLE(F_STR2LIST('A01,A02,A03')) B WHERE A.NO = B.COLUMN_VALUE;
    Begin
    If Str_In Is Null Then
    Return;
    End If;
    v_Str := Str_In || Split_In;
    Loop
    P := Instr(v_Str, Split_In);
    Exit When(Nvl(P, 0) = 0);
    Pipe Row(Substr(v_Str, 1, P - 1));
    v_Str := Substr(v_Str, P + 1);
    End Loop;
    Return;
    End;

    使用:
    Select Column_Value As 值 From Table (Select fun_Str2list('111|222|333', '|') From Dual)

  • 相关阅读:
    一个应用程序无法启动错误的解决过程
    C#调用C库的注意事项
    STM32硬件调试详解
    CP2102模块介绍(USB转uart)
    CH340在STM32实现一键下载电路
    LM27313升压转换器
    常用贴片电阻、电容、电感封装
    MAX16054
    在51系列中data,idata,xdata,pdata的区别
    用UGN3503霍尔器件制作的数字指南针_电路图
  • 原文地址:https://www.cnblogs.com/Elcser/p/14919767.html
Copyright © 2020-2023  润新知