• (转)oracle的split函数


    本文转载自:http://www.cnblogs.com/linbaoji/archive/2009/09/17/1568252.html

    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主要是为了提高效率,不用等所有的数据都处理完成了才返回客户端,它是边处理边返回.适用于大数据量的交互. 

  • 相关阅读:
    SHELL
    Docker
    RHCE内容记要
    mysql基本知识的总结
    Linux启动提示Kernel panic
    配置tomcat、nginx实现反向代理(需操作)
    linux下nginx的安装和配置
    linux下安装mysql5.7(centos6.0)
    linux打包解压包(.tar .gz .tar.gz .zip)
    多重继承下的类型转换
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/4105619.html
Copyright © 2020-2023  润新知