zoukankan      html  css  js  c++  java
  • 通过字符(“,”,“”,“、”等)来拆分字符窜(split)

    PL/SQL 中没有split函数,需要自己写。

      代码:

     

    create or replace type type_split as table of varchar2(50);  --创建一个  type  ,如果为了使split函数具有通用性,请将其size 设大些。

    --创建function

    create or replace function split

    (

       p_list varchar2,

       p_sep varchar2 := ','

    )  return type_split pipelined

     is

       l_idx  pls_integer;

       v_list  varchar2(50) := 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;

       return;

    end split;

    测试:

     

    SQL> select * from table(split('northsnow,塞北的雪',','));

    COLUMN_VALUE

    --------------------------------------------------

    northsnow

    塞北的雪

    SQL> 


    补充:
    -----PIPELINED关键字是什么意思?
    ---- pipe row是什么意思?

    pipelined声名此function是pipe的,如果这么声名了,就必须使用pipe row的方式把数据返回,常规函数最后的"return 变量",就变成了"return".

    pipelined的function主要是为了提高效率,不用等所有的数据都处理完成了才返回客户端,它是边处理边返回.适用于大数据量的交互.

  • 相关阅读:
    vmware Unable to open kernel device "\.Globalvmx86": The system cannot find the file 的解决方法
    nc和telnet配合使用
    linux下批量替换文件内容
    Linux动态库的导出控制
    goang Receiver & interface
    Go与C语言的互操作 cgo
    Go fsm
    Git多账号登陆
    mysql 安装与配置、使用
    Reverse Integer
  • 原文地址:https://www.cnblogs.com/ywilson/p/2364775.html
Copyright © 2011-2022 走看看