添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

oracle sql 一字段逗号 拆分多行

在 Oracle SQL 中,可以使用 CONNECT BY LEVEL 和 REGEXP_SUBSTR 函数来将一字段中用逗号分隔的数据拆分为多行。具体的步骤如下:

假设我们有一个表 t1,其中包含了一个字段 str,其中的数据是用逗号分隔的。

CREATE TABLE t1 (id NUMBER, str VARCHAR2(100));
INSERT INTO t1 VALUES (1, 'a,b,c');
INSERT INTO t1 VALUES (2, 'd,e');

我们需要将 str 中的数据拆分成多行,可以使用以下 SQL 语句:

SELECT t1.id,
       trim(regexp_substr(t1.str, '[^,]+', 1, level)) str
FROM t1
CONNECT BY LEVEL <= length(t1.str) - length(replace(t1.str, ',')) + 1
    AND PRIOR t1.id = t1.id
    AND PRIOR sys_guid() IS NOT NULL;

这个语句中,我们使用了 CONNECT BY LEVEL 来生成多行数据,同时使用 REGEXP_SUBSTR 函数来提取每一行中的单个数据。其中 [^,]+ 表示匹配除了逗号以外的任意字符。

这个 SQL 语句的执行结果如下:

ID   STR

这样我们就成功地将一字段中逗号分隔的数据拆分成了多行。

  •