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多行转换成字符串方法总结

Oracle多行转换成字符串方法总结:(注意sys_connect_by_path 分隔符不要用“,”号)   当我们在做一些比较复杂的数据导出时,可能会经常遇到要将不固定的多行数据组合成一个字符串...

java多线程,将oracle中数据导入到sql到文件(包括大字段转换成字符串)

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi...

SQL2008如何将多行转换成多列

SQL2008 pivot及unpivot

用SQL将Oracle中同一列的多行记录拼接成一个字符串

-- 原始数据 -- a 111 -- b 222 -- a 333 -- a 444 -- b 555 -- 最终结果 -- a 111*333*444 SELECT L...

sql-varbinary转换成字符串

  • 2011年04月09日 09:42
  • 609B
  • 下载

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

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

Oracle SQL多行字符串拆分使用层次查询(connect by)、正则表达式

Oracle SQL多行字符串拆分使用层次查询(connect by)、正则表达式
  • Seandba
  • Seandba
  • 2017年05月23日 16:05
  • 1085

Oracle SQL符号分隔的多行字符串拆分

Oracle SQL 符号分隔 多行字符串 拆分
  • Seandba
  • Seandba
  • 2017年05月23日 22:51
  • 1287

在sql server中,实现列数据转换成逗号隔开字符串

项目需要,要在查询中,加上后续处理人查询条件,因为后续处理人字段存的是用户ID串,所以想用函数实现功能:根据用户ID串,返回用户姓名串 根据功能,在数据库查询窗口运行测试,sql如下:没有问题,返回...

Sql中把datetime转换成字符串(CONVERT)

一、回顾一下CONVERT()的语法格式: CONVERT ([ length ], [, style]) 二、这里注重说明一下style的含义:style 是将DATATIME 和SMALL...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle sql 将字符串转换成多行
举报原因:
原因补充:

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