使用 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 将可变长度分隔字符串拆分为列的主要内容,如果未能解决你的问题,请参考以下文章