通过 Oracle SQL 查询拆分行中列的逗号分隔值

2024-02-12

我有一个如下表:

-------------
ID   | NAME
-------------
1001 | A,B,C
1002 | D,E,F
1003 | C,E,G
-------------

我希望这些值显示为:

-------------
ID   | NAME
-------------
1001 | A
1001 | B
1001 | C
1002 | D
1002 | E
1002 | F
1003 | C
1003 | E
1003 | G
-------------

我尝试这样做:

select split('A,B,C,D,E,F', ',') from dual; -- WILL RETURN COLLECTION

select column_value
from table (select split('A,B,C,D,E,F', ',') from dual); -- RETURN COLUMN_VALUE

尝试使用以下查询:

 WITH T AS (SELECT 'A,B,C,D,E,F' STR  FROM DUAL)   SELECT    
 REGEXP_SUBSTR (STR, '[^,]+', 1, LEVEL) SPLIT_VALUES  FROM T 
 CONNECT BY LEVEL <= (SELECT LENGTH (REPLACE (STR, ',', NULL)) FROM T)

以下带有 ID 的查询:

WITH TAB AS 
(SELECT '1001' ID, 'A,B,C,D,E,F' STR FROM DUAL
)
SELECT    ID, 
REGEXP_SUBSTR (STR, '[^,]+', 1, LEVEL) SPLIT_VALUES  FROM TAB 
CONNECT BY LEVEL <= (SELECT LENGTH (REPLACE (STR, ',', NULL)) FROM TAB);

EDIT:尝试使用以下查询来获取多个 ID 和多个分隔:

WITH TAB AS 
(SELECT '1001' ID, 'A,B,C,D,E,F' STR FROM DUAL
UNION
SELECT '1002' ID, 'D,E,F' STR FROM DUAL
UNION
SELECT '1003' ID, 'C,E,G' STR FROM DUAL
)
select id, substr(STR, instr(STR, ',', 1, lvl) + 1, instr(STR, ',', 1, lvl + 1) - instr(STR, ',', 1, lvl) - 1) name 
from
( select ',' || STR || ',' as STR, id from TAB ),
( select level as lvl from dual connect by level <= 100 )
where lvl <= length(STR) - length(replace(STR, ',')) - 1

order by ID, NAME
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Oracle SQL 查询拆分行中列的逗号分隔值 的相关文章

随机推荐

  • 如何在上传到服务器之前调整/压缩 Android 中的相机图像或图库图像?

    我必须上传可以从图库中选择或用相机拍摄的图像 我已经成功地做到了这一点 但问题是 有时图像大小为 1MB 所以上传到服务器需要更多时间 我需要在上传之前调整此图像的大小 这个怎么做 public void onActivityResult
  • 从 JSON 创建数组的数组

    我在 ajax 调用后收到以下内容response在 PHP 中使用json encode 2013 02 24 0 2013 02 25 0 2013 02 26 1 2013 02 27 6 2013 02 28 6 2013 03 0
  • 无法在cygwin上安装uwsgi

    我的主要操作系统是 Windows 10 但我使用 cygwin 作为终端 通过安装uwsgi时pip3 install uwsgi命令 它失败并显示错误消息 AttributeError module os has no attribut
  • 我如何全局安装 sbt 插件

    我从github下载了android sdk plugin 文档说我需要全局安装插件 将插件全局安装到 sbt plugins 或 sbt 0 13 plugins 分别适用于 0 12 和 0 13 addSbtPlugin com ha
  • 实体(空)不符合键“title”的键值编码

    我正在尝试让 RestKit 和 CoreData 一起工作 我越来越接近了 但我收到以下错误 CoreData error Failed to call designated initializer on NSManagedObject
  • 单个应用程序中的多个 RCTRootView

    我正在创建一个 React Native 应用程序 但我需要使用 Objective C 来构建我的自定义 UIView 但问题是这个 UIView 需要显示反应内容 例如反应文本输入和按钮 我正在考虑向自定义 UIView 添加 RCTR
  • 位图.保存“一般错误”

    当我运行我的应用程序时 出现以下错误 GDI 中发生一般错误 我环顾四周 发现人们也有类似的错误 但没有找到真正的解决方案 或者实施起来确实很痛苦 那些没有得到解决方案的人还没有发布他们的代码 所以我想我不妨尝试一下并提出另一个关于如何修复
  • @login_required 正在丢失当前指定的语言

    我在用i18n patterns使我的应用程序国际化并且它正在工作 除非我单击需要登录的链接 受保护的视图 login required装饰器 我被重定向到默认语言的登录表单 而不是当前活动的语言 如何保留活动 URL 换句话说 当在法语部
  • rawQuery(查询,选择参数)

    我想使用选择查询从表中检索数据 我已经发现 rawQuery query selectionArgs 的方法SQLiteDatabase类来检索数据 但我不知道如何query and selectionArgs应该传递给rawQuery m
  • 你能从 sklearn 网格搜索 (GridSearchCV) 中获得所有估计器吗?

    我最近使用测试了许多超参数组合sklearn model selection GridSearchCV 我想知道是否有一种方法可以调用在此过程中接受过培训的所有先前估算器 search GridSearchCV estimator my e
  • 分布式缓存

    我正在 opensuse linux 上使用 hadoop 19 我没有使用任何集群 而是在我的机器本身上运行我的 hadoop 代码 我遵循放入分布式缓存的标准技术 但我不是一次又一次地从分布式缓存访问文件 而是将文件的内容存储在一个数组
  • 如何知道 C 函数 free 是否正常工作?

    我发现以下代码的结果存在一些差异 include
  • 为什么Java中没有AtomicBoolean数组数据类型?

    我注意到有NOJava 中的 AtomicBooleanArray 数据类型类似于 AtomicIntegerArray 虽然我可以使用 AtomicBoolean 来满足当前的需求 但我很想了解为什么 AtomicBooleanArray
  • 如何在 JavaScript 中记录返回

    我正在为浏览器应用程序的工作项目编写自己的库 并且在决定如何注释代码时遇到同样的老问题 我正在尝试遵循JsDoc https code google com p jsdoc toolkit w list语法 但可能会继续谷歌闭包编译器 ht
  • 仅使用 CSS 交叉淡入淡出多个背景图像 - 单页面设计

    我正在使用多个 div 构建一个响应式单页网站 这些 div 可缩放到用户浏览器的高度和宽度 我想让多个背景图像在网站上的一个 div 内无限循环地交叉淡入淡出 我尝试按照本教程进行操作 http css3 bradshawenterpri
  • 从 Android Activity 绑定到服务

    我有一个启动服务的活动 当活动关闭时 我希望服务继续在后台运行 我在这里有几个问题 关闭活动屏幕会导致活动实际停止吗 还是我需要强行阻止它才能停止 如果关闭屏幕确实导致它停止 那么我认为我需要使用startService开始它 那是对的吗
  • 如何禁用 bootstrap-datetimepicker-master 中的特定日期?

    datepicker datetimepicker format MM dd hh ii P startDate 2016 08 19 10 00 daysOfWeekDisabled 1 2 3 4 5 autoclose true 如何
  • WSDL 中的 有什么区别?

    Both
  • 为什么 64 位比 32 位更快?

    我一直在进行一些性能测试 主要是为了了解迭代器和简单 for 循环之间的区别 作为其中的一部分 我创建了一组简单的测试 然后对结果感到非常惊讶 对于某些方法 64 位比 32 位快近 10 倍 我正在寻找的是对为什么会发生这种情况的一些解释
  • 通过 Oracle SQL 查询拆分行中列的逗号分隔值

    我有一个如下表 ID NAME 1001 A B C 1002 D E F 1003 C E G 我希望这些值显示为 ID NAME 1001 A 1001 B 1001 C 1002 D 1002 E 1002 F 1003 C 1003