连续显示单个表数据



需要知道Oracle sql中的输出

Country              Code
USA                  23, 24, 25, 30
Canada               40, 50, 70

要像这样显示的输出

Country            Code
USA                 23
USA                 24
USA                 25
USA                 30
Canada              40
Canada              50
Canada              70

您可以尝试将connect byinstr一起使用,以获取组号以达到级别,然后使用regexp_substr获取字符串。

Oracle 11g R2 架构设置

CREATE TABLE T(
   Country varchar(50),
   Code varchar(50)
);

INSERT INTO T VALUES ('USA','23, 24, 25, 30');
INSERT INTO T VALUES ('Canada','40, 50, 70');

查询 1

select distinct Country,trim(regexp_substr(Code, '[^,]+', 1, level)) Code
FROM T
connect by instr(Code, ',', 1, level - 1)  > 0
ORDER BY Country desc

结果

| COUNTRY | CODE |
|---------|------|
|     USA |   23 |
|     USA |   24 |
|     USA |   25 |
|     USA |   30 |
|  Canada |   40 |
|  Canada |   50 |
|  Canada |   70 |

最新更新