首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在oracle中根据分隔符拆分字符串

在oracle中根据分隔符拆分字符串
EN

Stack Overflow用户
提问于 2013-03-21 21:50:22
回答 1查看 3.5K关注 0票数 0

我有一张这样的桌子

代码语言:javascript
运行
复制
name Description
VM1  SP L A - WINSVRS #P19  QTY 1
VM2  SPLA - VRSTD #P29-9 9 99 QTY 2 : SPLVRENT #P3 999999 9 QTY 3
VM3  SPLA - WINSVRSTD #P39-9 999 QTY 3
VM4  SPLA - WI NS V R STD #P59- 9 9 99 QTY 2 : S P LA - W IN SV RENT #P39-9999 QTY 3 :   SPLA - WIN S VR SMB # P 3 9- 999 99 QTY 5
VM6  SPLA - WINSVRSQLSERVERaaaaaaaaaSTD #P 6 9-9 9 9 9 QTY 6

我需要这样的输出

代码语言:javascript
运行
复制
name Description                     ponumber
-------------------------------------------------
VM1  SP L A - WINSVRS                   P19 
VM2  SPLA - VRSTD                       P29-9 9 99                      
VM2  SPLVRENT                           P3 999999 9
VM3  SPLA - WINSVRSTD                   P39-9 999
VM4  SPLA - WI NS V R STD               P59- 9 9 99
VM4  S P LA - W IN SV RENT              P39-9999
VM4  SPL A - WIN S VR SMB               P 3 9- 999 99
VM6  SPLA - WINSVRSQLSERVERaaaaaaaaaSTD P 6 9-9 9 9 9

请告诉我如何使用substring和instr string使用循环获取输出

感谢并问候阿南德

EN

回答 1

Stack Overflow用户

发布于 2013-03-21 22:08:11

尝尝这个

代码语言:javascript
运行
复制
with CTE as
(
  select name, 
  trim(cast(v.column_value.extract('//text()') as varchar2(50))) description
  from t,
  table( xmlsequence( xmltype(
    '<descriptions><description>' 
     || replace(description, ':', '</description><description>') 
     || '</description></descriptions>'
        ).extract('//descriptions/*'))) v
 )
select 
 name,
 REGEXP_SUBSTR(description,'[^#]+') description,
 --REGEXP_SUBSTR(description,'[^#]+',1,2) phnQty,
 Trim(REGEXP_SUBSTR(REGEXP_SUBSTR(description,'[^#]+',1,2),'[^Q]+')) phn
from cte;

SQL DEMO

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15549411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档