【问题标题】:Separate comma separated string into columns oracle sql [duplicate]将逗号分隔的字符串分隔成列oracle sql [重复]
【发布时间】:2021-10-09 23:31:08
【问题描述】:

我在表格中有一个列,其中的值用逗号分隔。似乎最大条目数为 5,但我不确定。我需要一种方法来选择单个值并将每个条目放在自己的列中。它只是一个 select 语句,而不是建立一个新表。

create table commasplit (agentname varchar2(40), categories varchar2(100));
insert into commasplit (select 'Alice', 'cat01, cat02, cat03' from dual);
insert into commasplit (select 'Bob', 'cat04, cat05' from dual);
insert into commasplit (select 'Carl', 'cat02, cat06, cat01, cat11' from dual);

所以我想选择它以便得到这些结果:

AGENT   CATA   CATB   CATC   CATD
Alice   cat01  cat02  cat03  null
Bob     cat04  cat05  null   null
Carl    cat02  cat06  cat01  cat11

【问题讨论】:

  • @astentx,是的,谢谢。不知道我在搜索时是怎么错过的。

标签: sql oracle


【解决方案1】:

您可以使用REGEXP_SUBSTR,但您必须指定列数。

SELECT agentname
       ,REGEXP_SUBSTR (categories, '[^,]+', 1, 1)    AS CATA
       ,REGEXP_SUBSTR (categories, '[^,]+', 1, 2)    AS CATB  
       ,REGEXP_SUBSTR (categories, '[^,]+', 1, 3)    AS CATC 
       ,REGEXP_SUBSTR (categories, '[^,]+', 1, 4)    AS CATD
FROM commasplit;

db<>fiddle中的演示

【讨论】:

  • 行得通,谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-03-13
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
相关资源
最近更新 更多