查看: 2583|回复: 14

[SQL] 【讨论】求一个SQL,字符操作

[复制链接]
论坛徽章:
2
灰彻蛋
日期:2013-08-30 21:31:58现代
日期:2013-09-18 11:13:03
发表于 2014-11-24 21:02 | 显示全部楼层 |阅读模式
执行SQL如下:

CREATE TABLE T1(id int, col1 varchar(500), col2 varchar(500) );
insert into t1 values(1,'ab,cd,ef,gh,yx','aa,bb,cc,dd,yy);
insert into t1 values(2,'abc,de,fg','xx,yy,zz');

想要的结果:
   id       col1      col2
   1         ab         aa
   1         cd         bb
   1         ef          cc
   1         gh         dd
   1         yx          yy
   2        abc         xx
   2         de         yy
   2         fg          zz

就是按逗号拆成字符串,再行转列,最好用基本SQL写,PL/SQL不支持,急,谢谢各位。


论坛徽章:
17
2013年新春福章
日期:2013-02-25 14:51:242015年新春福章
日期:2015-03-04 14:53:16马上加薪
日期:2014-12-18 01:09:30祖国65周年纪念徽章
日期:2014-09-27 08:49:22马上有房
日期:2014-07-16 11:59:32优秀写手
日期:2014-07-10 06:00:12马上加薪
日期:2014-04-20 23:04:51马上有对象
日期:2014-04-19 23:32:33马上有车
日期:2014-03-29 23:05:24问答徽章
日期:2014-01-17 15:19:03
发表于 2014-11-24 21:32 | 显示全部楼层
你那个结果是不写错了,1         ab         cd 是不是1         ab         aa 啊?

使用道具 举报

回复
论坛徽章:
400
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
发表于 2014-11-24 21:36 | 显示全部楼层
看行列转换大全精化帖

使用道具 举报

回复
论坛徽章:
2
灰彻蛋
日期:2013-08-30 21:31:58现代
日期:2013-09-18 11:13:03
 楼主| 发表于 2014-11-24 21:58 | 显示全部楼层
AnddyHua 发表于 2014-11-24 21:32
你那个结果是不写错了,1         ab         cd 是不是1         ab         aa 啊?

是的,谢谢

使用道具 举报

回复
论坛徽章:
2
灰彻蛋
日期:2013-08-30 21:31:58现代
日期:2013-09-18 11:13:03
 楼主| 发表于 2014-11-24 21:59 | 显示全部楼层
〇〇 发表于 2014-11-24 21:36
看行列转换大全精化帖

OO麻烦给个直通车,我没搜到行列转换大全

使用道具 举报

回复
论坛徽章:
536
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2014-11-24 22:38 | 显示全部楼层
SELECT id
      ,REGEXP_SUBSTR(col1,'[^,]+',1,l) AS NAME
  FROM t1
      ,(SELECT LEVEL l FROM DUAL CONNECT BY LEVEL<=100)
WHERE l <=LENGTH(col1) - LENGTH(REPLACE(col1,','))+1
ORDER BY 1,2;
  

使用道具 举报

回复
论坛徽章:
2
灰彻蛋
日期:2013-08-30 21:31:58现代
日期:2013-09-18 11:13:03
 楼主| 发表于 2014-11-24 22:45 | 显示全部楼层
newkid 发表于 2014-11-24 22:38
SELECT id
      ,REGEXP_SUBSTR(col1,'[^,]+',1,l) AS NAME
  FROM t1

大师,基本SQL能实现吗?我这不是ORACLE。。

使用道具 举报

回复
论坛徽章:
536
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2014-11-24 23:25 | 显示全部楼层
shamy0814 发表于 2014-11-24 22:45
大师,基本SQL能实现吗?我这不是ORACLE。。

有INSTR和SUBSTR或者类似函数吗?原理就是根据逗号的位置去解析出来。为了一行变多行,必须和一个集合进行笛卡尔积,你可以用任何包含足够行数的表。

使用道具 举报

回复
论坛徽章:
142
秀才
日期:2016-01-06 14:01:09秀才
日期:2016-02-18 10:06:46秀才
日期:2016-02-18 10:08:02秀才
日期:2016-02-18 10:08:14秀才
日期:2016-03-01 09:57:08天蝎座
日期:2016-03-18 14:23:56秀才
日期:2016-03-24 09:10:24秀才
日期:2016-03-24 09:20:52秀才
日期:2016-04-21 14:08:53秀才
日期:2016-04-21 14:11:59
发表于 2014-11-25 08:57 | 显示全部楼层
shamy0814 发表于 2014-11-24 22:45
大师,基本SQL能实现吗?我这不是ORACLE。。

达蒙?

使用道具 举报

回复
论坛徽章:
400
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
发表于 2014-11-25 09:07 | 显示全部楼层
shamy0814 发表于 2014-11-24 21:59
OO麻烦给个直通车,我没搜到行列转换大全

http://www.itpub.net/thread-1017026-1-1.html

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


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

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表