Oracle - CSV 只拆分查询中的一列

用户1009073

Oracle 12cR1 - 我将一个复杂的业务流程放入查询中。一般来说,这个过程将是

with t1 as (select CATEGORY, PRODUCT from ... )
select <some manipulation> from t1;

t1 -又名第一行的输出 - 将如下所示:

CATEGORY       PRODUCT
Database       Oracle, MS SQL Server, DB2
Language       C, Java, Python

我需要 SQL 查询的第二行(也就是操作)来保留 CATEGORY 列,并在逗号上拆分 PRODUCT 列。输出需要看起来像这样

CATEGORY    PRODUCT
Database    Oracle
Database    MS SQL Server
Database    DB2
Language    C
Language    Java
Language    Python

我查看了几个不同的 CSV 拆分选项。我不能使用 DBMS_Utility.comma_to_Table 函数,因为它有特殊字符或以数字开头的限制。我找到了一个很好的 TABLE 函数,它可以将字符串转换为单独的行,称为 f_convert。此功能是在计算器上约1/3了网页的方式在这里

由于这是一个表函数,所以它被这样调用......并且正如预期的那样会给我 3 行。

SELECT * FROM TABLE(f_convert('Oracle, MS SQL Server, DB2'));

我如何处理这个 TABLE 函数,因为它是一个“列函数”?虽然这是完全不正确的 SQL,但我正在寻找类似的东西

with t1 as (select CATEGORY, PRODUCT from ... )
select CATEGORY from T1, TABLE(f_convert(PRODUCT) as PRODUCT from t1;

任何帮助表示赞赏...

加里_W

使用 connect by 来“循环”列表的元素,其中逗号空格是分隔符。regexp_substr 获取列表元素(正则表达式允许 NULL 列表元素)并且前面的子句保持类别直。

with t1(category, product) as (
  select 'Database', 'Oracle, MS SQL Server, DB2' from dual union all
  select 'Language', 'C, Java, Python' from dual
)
select category, 
       regexp_substr(product, '(.*?)(, |$)', 1, level, NULL, 1) product
from t1
connect by level <= regexp_count(product, ', ')+1   
  and prior category = category
  and prior sys_guid() is not null; 


CATEGORY PRODUCT
-------- --------------------------
Database Oracle
Database MS SQL Server
Database DB2
Language C
Language Java
Language Python

6 rows selected.

SQL>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ORACLE SQL CSV列比较

按唯一列拆分CSV

将 csv 文件中的一列(字符串)拆分为三列

将一列拆分为 CSV 文件、PHP、多维数组中的 3 列

Javascript根据第一列中的值从csv文件中拆分行

使用python將csv文件中的一列拆分為2

将.TXT数据作为一列拆分为n行,例如Python中的CSV?

使用Python将单行文本拆分为CSV文件中同一列的多行

在查询如何在 Oracle 中的另一列上使用 order by 获取一列时

更新Oracle中的一列

在Oracle中将一列中的500个不同值拆分为2个列,每列250个值

如何根据第一列中的日期将CSV文件拆分为相应的CSV文件(Python)?

根据另一列拆分csv文件的一列

在一列中的csv writer输出

编辑Csv文件中的一列

如何拆分一列中的数据并将值存储在python3.x csv模块功能的新列中

如何根据 Oracle SQL 中的某些条件复制一行并拆分其中一列?

从Oracle查询PHP中一列的总和

根据一列中的值拆分一个csv,然后按行合并/绑定输出

根据一列条件拆分大 csv 并写入较小的 csv

熊猫通过一列将CSV拆分为多个CSV(或DataFrame)

根据一列的值将CSV文件拆分为少量的CSV文件

如何基于一列拆分CSV文件并创建多个CSV文件

根据另一列中的分组,将csv文件/ pandas数据帧拆分为多个文件

使用双引号将 SQL Server 查询结果导出到 .csv 文件时,列中出现逗号问题,数据将拆分到下一列

如何使用UTF_FILE Oracle从CSV文件中拆分数据

使用Java从csv批量插入Oracle DB中的表

是否有一个Oracle PL / SQL命令可以根据脚本中的查询自动创建.csv或.xml文件?

如何在Oracle SQL Developer中将Oracle中的多个表导出到多个.csv文件中