使用 Oracle SQL 将可变长度分隔字符串拆分为列

Posted

技术标签:

【中文标题】使用 Oracle SQL 将可变长度分隔字符串拆分为列【英文标题】:Splitting a variable length delimited string into columns using Oracle SQL 【发布时间】:2014-04-04 12:20:14 【问题描述】:

我正在处理一个要求,我需要将逗号分隔的字符串拆分为不同的列。

这个列表是可变长度的,即它可以是

               a,b,c,d
                 or
               a,b,c,d,e

等等。即分隔符的数量,因此列的数量不固定。

有没有办法使用 SQL 查询来实现它?

我使用的是 Oracle 11gR2 企业版

谢谢

维沙德

【问题讨论】:

主要要求是使用普通 SQL 而不是 PL/SQL? 不幸的是,是的。 :-( 如果结果集包含大量固定字段,则这是一个有效的解决方案,例如150,仅部分填充了第一列中的数据? 嗯。是的,它可能被认为是一个有效的解决方案。但是,我不知道逗号分隔列表中可以存在的最大项目数。当前最大值约为 178。 【参考方案1】:

这取决于你在哪里工作。

在一个表中,一个 VARCHAR2 最多可以包含 4000 个字符。在 Oracle 12c 中,它可以是 32K - 但必须由 DBA 配置。

在 PL/SQL 内部,限制也高达 32K

【讨论】:

字符串长度将小于 4000 个字符。

以上是关于使用 Oracle SQL 将可变长度分隔字符串拆分为列的主要内容,如果未能解决你的问题,请参考以下文章