Oracle 行转列

  1. 行转列,以, 分隔
SELECT regexp_substr(你要转的字符串,'[^,]+',1,rownum) str
  FROM dual
    CONNECT BY rownum <= (LENGTH(你要转的字符串) - LENGTH(REGEXP_REPLACE(你要转的字符串, ',','')) + 1)
  1. 将行转列语句提取成一个Function
//header
TYPE r_str IS RECORD(
  str VARCHAR2( 100 ) 
);
TYPE t_str IS TABLE OF r_str;

FUNCTION get_separate_str(
    p_str IN VARCHAR2 DEFAULT NULL
) RETURN t_str PIPELINED;

//body
FUNCTION get_separate_str(
    p_str IN VARCHAR2 DEFAULT NULL )
  RETURN t_str PIPELINED
AS
  rec_out r_str;
BEGIN
  FOR rec IN
  (SELECT regexp_substr(p_str,'[^,]+',1,rownum) str
  FROM dual
    CONNECT BY rownum <= (LENGTH(p_str) - LENGTH(REGEXP_REPLACE(p_str, ',','')) + 1)
  )
  LOOP
    rec_out.str := rec.str;
    PIPE ROW (rec_out);
  END LOOP;
  RETURN;
END get_separate_str;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Oracle行转列、列转行的Sql语句总结 多行转字符串这个比较简单,用||或concat函数可以实现SQL Co...
    王滕辉阅读 6,330评论 0 3
  • 一、行转列 近期在进行MES项目的开发,遇到了这样的一个问题:需求页面是这样的: 这是一个显示生产线上设备状态的页...
    玖等紫檀阅读 715评论 0 0
  • 一、PIVOT实例 1. 建表 建立一个销售情况表,其中,year字段表示年份,quarter字段表示季度,amo...
    sleepySnail阅读 2,852评论 0 0
  • 孤 月 自 空 悬, 风 云 流 星 息。 而 立 空 五 载, 妻 已 伴 三 秋。
    氵chao_小婷阅读 118评论 0 0
  • 失眠治疗日记2017-11-28(第16天) 今天是我参加失眠互助治疗第16天,按照“上下不动静”五步疗法...
    亲民_3025阅读 273评论 0 2

友情链接更多精彩内容