oracle sql 将字符串转换成多行

原创 2015年11月19日 16:05:48

    今天遇到客户要求将字符串转换成多行的形式,自己摸索了一些;大家直接copy去用吧;

     

with tt as(select zhbh as b,replace(yhbh,',',',') as a  from ptsx_tmpjyzhxx where zhbh in(6568,13810,6529))
select  a, b from 
(
select level,b,substr(a,instr(','||a,',',1,level),instr(a||',',',',1,level)-instr(','||a,',',1,level))a
from tt
connect by level<=length(a)-length(replace(a,','))+1 ) group  by b,a


   在网上也搜索了几种,大家可以试试不错的

    

with tmp_t as
 (select '1001' as userId, '10,12,15' as workgroups
    from dual
  union
  select '1002' as userId, '2,4,5' as workgroups from dual)
select userid,
       substr(tempgroups,
   instr(tempgroups, ',', 1, lv) + 1,
   instr(tempgroups, ',', 1, lv + 1) -
   (instr(tempgroups, ',', 1, lv) + 1))
  from (select userid,
    ',' || workgroups || ',' AS tempgroups,
    length(workgroups || ',') -
    nvl(length(replace(workgroups, ',')) , 0) AS groupcount
          FROM tmp_t) a,
       (select LEVEL lv from dual CONNECT BY LEVEL <= 5) b
 where b.lv <= a.groupcount
 order by userid, lv

   最简单的这种:

with t as
 (select 'a;b;c;d;e' as str from dual)
select level,
	   t.str,
	   substr(t.str, 2 * (level - 1) + 1, 1) as str_signle
  from t
connect by level <= length(t.str) - length(replace(t.str, ';', '')) + 1;

with t as
 (select 'i;am;a;test;mine' as str from dual)
select level,
  str,
  regexp_substr(t.str, '[^;]+', 1, level) str_single
  from t
connect by level <= length(t.str) - length(replace(t.str, ';', '')) + 1;



oracle 将一个字符串分割成多行

第一种方法: select substr(t,1,instr(t,',',1)-1) from ( select substr(s,instr(s,',',1,rownum)+1)||',' as...
  • xing_sky
  • xing_sky
  • 2012年12月06日 14:06
  • 9124

关于oracle的将字符串转换成多行

1.方法一 (sql方法)  with temp0 as         (select LEVEL lv from dual CONNECT BY LEVEL         select f...
  • qq_29464887
  • qq_29464887
  • 2017年06月16日 16:45
  • 688

oracle 字符串转多行

SELECT SUBSTR(FIELD1, INSTR(FIELD1, '|', 1, ROWNUM) + 1, INSTR(FIELD1, '|...
  • a714115852
  • a714115852
  • 2017年05月15日 18:06
  • 409

oracle多行转为字符串总结

  • 2015年01月17日 19:30
  • 7KB
  • 下载

用SQL将多行字符串数据转换成一行数据(实例)

SELECT * FROM ( SELECT * FROM ( SELECT o.OrderNo, case o.IsCustomerUrgent when 0 then N...
  • po_xiao_
  • po_xiao_
  • 2015年11月21日 17:38
  • 252

SqlServer和Oracle从多行记录(数据集)中查询结果并拼接成一个字符串的SQL语句(纵表数据转成拼接的文本)

SqlServer和Oracle从多行记录(数据集)中查询结果并拼接成一个字符串的SQL语句(纵表数据转成拼接的文本) 使用情景: 例如:需要从学生成绩表中,查询分数大于95分的所有学生编号,用逗号分...
  • hz932
  • hz932
  • 2015年07月08日 09:12
  • 2830

Oracle SQL函数listagg实现多行字符串连接

Oracle SQL函数listagg实现多行字符串连接
  • Seandba
  • Seandba
  • 2017年05月24日 13:53
  • 1292

字符串分割成多行数据(oracle函数)

原文地址——http://blog.csdn.net/qq525099302/article/details/47146537-- 创建分割类型(函数中要用到) create or replace t...
  • qq525099302
  • qq525099302
  • 2015年07月30日 10:51
  • 2081

oracle数字转为字符串

一。数字转为字符串  格式为9,0,$,l, .SQL> select ename,to_char(sal,'9999.000') salary from emp; ENAME SALARY -...
  • yanliling0909
  • yanliling0909
  • 2013年01月29日 09:42
  • 22911

[oracle] to_date() 与 to_char() 日期和字符串转换

[oracle] to_date() 与 to_char() 日期和字符串转换 to_date("要转换的字符串","转换的格式")   两个参数的格式必须匹配,否则会报错。 即按照第二个参数的格式...
  • IamaIearner
  • IamaIearner
  • 2014年03月19日 19:36
  • 4513
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle sql 将字符串转换成多行
举报原因:
原因补充:

(最多只允许输入30个字)