db2中如何将逗号分隔的列转换为多行

2023-12-24

我有下表(参考文献的数量是可变的):

Id | FK_ID| Reference |
-----------------------
1    2100   GI2, GI32
2    2344   GI56

我需要以下结果:

Id | FK_ID| Reference |
-----------------------
1    2100   GI2 
2    2100   GI32
3    2344   GI56

有没有什么简单的方法可以使用 DB2 来转换这样的数据?


你真的不应该像这样存储数据。幸运的是,有一种方法可以通过递归 SQL 来消除损害,大致如下:

WITH unpivot (lvl, id, fk_ref, reference, tail) AS (  
  SELECT 1, id, fk_ref,     
         CASE WHEN LOCATE(',',reference) > 0 
              THEN TRIM(LEFT(reference, LOCATE(',',reference)-1))
              ELSE TRIM(reference) 
         END,    
         CASE WHEN LOCATE(',',reference) > 0 
              THEN SUBSTR(reference, LOCATE(',',reference)+1)    
              ELSE '' 
         END  
  FROM yourtable  
  UNION ALL  
  SELECT lvl + 1, id, fk_ref,     
         CASE WHEN LOCATE(',', tail) > 0 
              THEN TRIM(LEFT(tail, LOCATE(',', tail)-1))    
              ELSE TRIM(tail) 
         END,    
         CASE WHEN LOCATE(',', tail) > 0 
              THEN SUBSTR(tail, LOCATE(',', tail)+1)    
              ELSE '' 
         END
  FROM unpivot 
  WHERE lvl < 100 AND tail != '')
  SELECT id, fk_ref, reference FROM unpivot

附言。未测试。

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

db2中如何将逗号分隔的列转换为多行 的相关文章

  • MySQL,连接两列

    MySQL 表中有两列 SUBJECT and YEAR 我想生成一个字母数字唯一编号 其中包含主题和年份的串联数据 我怎样才能做到这一点 是否可以使用像这样的简单运算符 您可以使用CONCAT http dev mysql com doc
  • PostgreSQL 窗口函数:row_number() over(按 col2 分区 col 顺序)

    以下结果集源自具有一些连接和联合的 SQL 查询 SQL 查询已经对 Date 和 game 上的行进行了分组 我需要一列来描述按日期列分区的游戏的尝试次数 Username Game ID Date johndoe1 Game 1 100
  • 如何在postgresql中编写有关最大行数的约束?

    我认为这是一个很常见的问题 我有一张桌子user id INT 和一张桌子photo id BIGINT owner INT 所有者是一个参考user id 我想向表照片添加一个约束 以防止每个用户将超过 10 张照片输入数据库 写这个的最
  • 无法将 CLOB 数据存储到 DB2 中的 CLOB 定义的列中

    我猜这是一个重复的问题 但尚未找到合适的解决方案 基本上 我试图通过以下方式将大一点的 XML 即 32000 个字符 插入到 CLOB 列中 DB2程序 插入失败并出现以下错误 看起来 DB2 正在将输入视为 String 而不是 CLO
  • 如何插入包含“&”的字符串

    如何编写包含 字符的插入语句 例如 如果我想将 J J Construction 插入数据库的列中 我不确定这是否有什么不同 但我正在使用 Oracle 9i 我总是忘记这一点 然后又回到它 我认为最好的答案是迄今为止提供的答复的组合 首先
  • 火鸟删除速度很慢

    我正在做这个简单的交易 DELETE FROM ominve01 WHERE CVE OBS IN SELECT CVE OBS FROM minve01 M WHERE M FECHA DOCU lt 31 12 2010 OR FECH
  • 在 SQL 中如何获得整数的最大值?

    我试图从 MySQL 数据库中找出整数 有符号或无符号 的最大值 有没有办法从数据库本身提取这些信息 是否有我可以使用的内置常量或函数 标准 SQL 或 MySQL 特定的 At http dev mysql com doc refman
  • 内连接 3 个表

    我正在使用 PHP 和 PDO 我需要重新收集连接 3 个表的信息 photos albums 相册照片 该表具有以下结构 photos photo id int path varchar nick varchar date timesta
  • 使用浏览器转换XML时是否可以通过URL向XSLT传递参数?

    当使用浏览器 Google Chrome 或 IE7 转换 XML 时 是否可以通过 URL 将参数传递给 XSLT 样式表 example data xml
  • Doxygen:记录函数指针类型的参数 (ANSI-C)

    我的代码需要一些函数指针类型 例如 brief Callback function type foo typedef int foo int a int b 我想记录函数参数的语义 但是 param in out 旁边的 brief声明似乎
  • LEFT JOIN 比 INNER JOIN 快得多

    我有一张桌子 MainTable 有超过 600 000 条记录 它通过第二个表连接到自身 JoinTable 在父 子类型关系中 SELECT Child ID Parent ID FROM MainTable AS Child JOIN
  • 如何重置 SQL Server 中表的 IDENTITY 列? [复制]

    这个问题在这里已经有答案了 我怎样才能重置我的IDENTITY我已经填充的表中的列 我尝试过类似的方法 但它不起作用 WITH TBL AS SELECT ROW NUMBER OVER ORDER BY profile id AS RN
  • 在 Oracle 中如何将多行组合成逗号分隔的列表? [复制]

    这个问题在这里已经有答案了 我有一个简单的查询 select from countries 结果如下 country name Albania Andorra Antigua 我想在一行中返回结果 如下所示 Albania Andorra
  • 如何选择从数据集中进入数据表的列?

    作为数据工作的新手 我希望我能正确地提出这个问题 如何选择从数据集中进入数据表的列 我知道我可以使用 填充数据表 DataTable table dataSet1 Tables 0 但这会引入所有列 如何仅使用某些列填充数据表 我正在使用
  • 用户表到用户和用户首选项。这是正常化了吗?

    我有一张桌子叫Users其偏好列表不断增加 这些首选项可以包括 ReligionId 它将连接到另一个包含宗教列表的表 偏好列表正在不断增加 我想把它分开Users表分成2个表 我认为行之有效的策略是制作一个单独的表 名为UserPrefe
  • 有没有任何工具可以查看针对数据库运行的查询?

    是否有任何工具可以检查 asp net 或 sql server 并报告针对数据库运行的所有查询 我问这个问题的原因是我正在一个项目中使用 Linq 并且想要仔细检查它对每个页面实际执行的操作 理想情况下 我想在浏览器中查看页面并获得为创建
  • 当有“拥有”时,为什么你有“哪里”[重复]

    这个问题在这里已经有答案了 我知道这个问题已经被讨论了很多 但我的研究都无法让我相信 where and havingMySQL 中的 子句 据我了解 我们可以使用 where 子句实现所有可以完成的操作having 例如 select f
  • T-SQL参数嗅探重新编译计划

    我有 SQL 命令 exec sp executesql N SELECT TOP 10 FROM mytableView WHERE Name LIKE Value0 ORDER BY Id DESC N Value0 varchar 5
  • TypeScript 接口函数属性:有什么区别?

    有人可以解释一下 为什么在这段代码中 对 Interface 类型常量的赋值有效 但对 Interface 类型常量的赋值会抛出错误 interface InterfaceA doSomething data object boolean
  • 通过 R 连接到 Azure SQL

    下面的代码允许我通过 R 连接到 Azure SQL 服务器 但是 我只能访问 主 数据库 而不能访问我在下面创建的两个数据库 表格显示为空白 有什么想法吗 谢谢 library RODBC library dplyr library DB

随机推荐

  • 以编程方式将扫描图像分割为单独的图像

    为了提高 OCR 质量 我需要对扫描图像进行预处理 有时我需要对带有少量图片的图像进行OCR 页面上的组件并且它们处于不同的角度 例如 一次扫描一些纸质文档 例如 是否有可能以编程方式自动将此类图像划分为包含每个逻辑文档的单独图像 例如使用
  • 将 datashader 图像添加到 matplotlib 子图

    是否可以将 datashader 图像添加到一组 matplotlib 子图中 作为一个具体的例子 import numpy as np import pandas as pd import matplotlib pylab as plt
  • Newtonsoft.Json 导致序列化发生两次,导致 Reference.cs 中出现重复定义

    我有一个具有服务参考的 Common 项目 添加引用后Newtonsoft json 版本6 0 2 http www newtonsoft com json到具有服务引用和可序列化类 ChatLine 的同一项目 公共 Serializa
  • 如何从二维数组中获取数据并放入一维数组中

    我有一个 2D 数组 我想通过 MATLAB 创建 1D 数组 以满足 1D 输出的每个元素都是由 2D 数组中给定索引的值创建的要求 二维数组示例是 A 2 4 6 1 9 7 3 4 5 和一维数组的索引 X 1 2 3 Y 1 2 3
  • 在 PintOS 中运行 make 时获取对“floor”的未定义引用

    我正在尝试在 PintOS makefile 上运行 make 但我不断收到对 floor 错误的未定义引用 生成文件如下 我正在运行带有 gcc 4 6 1 的 Ubuntu 11 10 任何帮助表示赞赏 all setitimer he
  • 使用 jest 运行测试时的可选链接问题

    我正在尝试使用 Jest 运行测试 目前我在 React 应用程序中使用 jsx 和 tsx 从 js 更改为 ts 但是当我运行测试时 除了 tsx 中具有可选阻塞的测试之外 所有 jsx 测试都成功 我总是收到错误Unexpected
  • 使用 sscanf 解析输入的 C++ 替代方案

    假设我的程序需要以下形式的参数 0 562 1 4e 2 即浮点对 我应该如何在没有正则表达式的情况下在 C 中解析此输入 我知道在用户输入方面需要考虑许多极端情况 但我们假设给定的输入与上述格式紧密匹配 除了进一步的空格 在C中 我可以做
  • 实用的 Zend_ACL + Zend_Auth 实现和最佳实践

    Context 我的问题与我正在开发的一个论坛有关 该论坛与SO非常相似 其中有 有权查看话题但无法回复或投票的访客 具有足够代表的成员可以编辑 投票其他帖子 并且默认情况下他们可以回复并拥有与来宾相同的权限 几乎可以做任何事情的管理员 我
  • 查询多个 AWS 区域中的活动 EC2 实例

    我们可以同时查询多个AWS区域吗 我想通过 AWS CLI 查询来自多个 AWS 区域的数据 例如每个区域中活动的所有 EC2 实例 不 无法在一个设置中设置多个区域 你可以做这样的事情 for region in aws ec2 desc
  • 将路由与 Symfony 中的当前请求进行比较

    对于我的网站导航 我想指示当前页面 如果导航中的每个页面都有自己的路线 是否有办法查看当前请求是否与该路线匹配 就像是 request gt getRoute my route 或者 更一般地说 在 Symfony 中创建站点导航时是否有设
  • 单元测试如何确认已引发异常

    我正在为 C 类编写一个单元测试 我的其中一个测试应该会导致该方法在添加数据时引发异常 我如何使用单元测试来确认异常已被抛出 这取决于您使用的单元测试框架 在all在这种情况下你可以这样做 Test public void MakeItGo
  • 将字符串转换为双精度数是否等于字面量双精度数?

    例如 assert atof 1 2 1 2 不管使用什么浮动 我知道浮点精度并不精确 但它恰恰不精确 所以四舍五入到二进制会产生完全相同的双精度吗 C 标准不保证这一点 源代码中转换浮点文字的语义在 C 2011 草案 N1570 6 4
  • Angular 2 CLI - php 用于索引文件而不是 html 文件

    有没有办法将通过 Angular 2 CLI 创建和提供服务的 Angular 2 应用程序从默认的 html 文件更改为 php 文件 是否有某个地方的设置确定 ngserve 命令充当默认索引文件 MBU 似乎 Angular cli
  • 使用一个大的 INSERT 语句保存许多 Django 对象

    假设您有以下情况 for i in xrange 100000 account Account account foo i account save 显然 这10万INSERTDjango 执行的语句将需要一些时间 如果能够将所有这些结合起
  • 是否可以将类添加到伪元素?

    我想不会 因为这不起作用
  • Hive 分区验证

    我创建了一个分区的配置单元表 我将数据插入到该表中 现在假设我执行一个select 查询使用where那么我如何确保 Hive 查询正在使用分区 假设您的 HIVE 数据分为 3 个分区 并且每个 HDFS 分区包含一个不大于 1 个 HD
  • Android Vision Api - 条码检测如何获取条码类型?

    我正在使用 AndroidGoogle Vision API 并创建了一个标准条形码阅读器 但我想检测读取什么类型 格式的条形码 i e CODE 39 CODE 128 QR Code ETC 有没有办法返回类型 Thanks 因为我没有
  • 修复 Android TV 上控件的焦点

    我花了很多时间来理解为什么它不起作用 但仍然不知道如何修复它 我找到了这个解决方案https github com flutter flutter issues 49783 https github com flutter flutter
  • Visual C# sizeMode 固定制表符文本对齐方式

    我正在使用 Visual C 开发一个简单的选项卡式 Web 浏览器 我正在研究选项卡部分 我希望每个选项卡都是固定宽度 问题是 当它设置为固定大小模式时 网页标题中的文本对齐错误 就好像文本从中心开始 向右移动 在左侧留下了巨大的空白 我
  • db2中如何将逗号分隔的列转换为多行

    我有下表 参考文献的数量是可变的 Id FK ID Reference 1 2100 GI2 GI32 2 2344 GI56 我需要以下结果 Id FK ID Reference 1 2100 GI2 2 2100 GI32 3 2344