首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据oracle plsql中列中逗号分隔的值拆分选择查询行

如何根据oracle plsql中列中逗号分隔的值拆分选择查询行
EN

Stack Overflow用户
提问于 2020-06-01 17:58:12
回答 1查看 41关注 0票数 0

我写了两个查询联合。我得到的结果是逗号分隔在两列中。输出显示为2条记录。

如何将它们分成4项记录,如预期结果所示?

代码语言:javascript
复制
select emp_id,dept_name,location from department where dept_id = 1
union
select emp_id,dept_name,location from sales_dept where dept_id = 1;

输出

代码语言:javascript
复制
emp_id ----- dept_name------  location

r1-----------Retail,IT-----   US, UK
k2-----------Sales,Chemical-  NZ, SA
j3-----------Biotech(Chemistry,Tech)-   JA

我需要预期的输出如下所示:

代码语言:javascript
复制
emp_id ----- dept_name-----location
r1-----------Retail--------US
r1-----------IT----------- UK
k2-----------Sales---------NZ
k2-----------Chemical------SA
j3---------Biotech(Chemistry,Tech)--JA

dept_name的最后一个记录是“生物技术(化学,技术)”,应该显示为单一记录,而不是分割。请让我知道怎么做。

吉姆提供的查询很好,除非在这个场景中,dept_name是生物技术(化学,技术),因为现在给出了需求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-01 18:54:53

请使用以下查询,

代码语言:javascript
复制
select emp_id, dept_name, location from
(select distinct emp_id, trim(regexp_substr(dept_name,'[^,]+', 1, level) ) dept_name, 
trim(regexp_substr(location,'[^,]+', 1, level) ) location, level
from pivot_comma
connect by regexp_substr(dept_name, '[^,]+', 1, level) is not null 
order by emp_id, level);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62138108

复制
相关文章

相似问题

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