gpt4 book ai didi

sql - 将字符串拆分成行Oracle SQL

转载 作者:行者123 更新时间:2023-12-04 17:18:51 25 4
gpt4 key购买 nike

搜索论坛后,我想出了以下方法,但不起作用:/

我有一张 table ,下面是;

ID |   Strings     
123| abc fgh dwd
243| dfs dfd dfg
353| dfs
424| dfd dfw
523|
.
.
.

请不要有大约20,000行,我的另一种选择是编写一个存储过程来做到这一点...基本上我需要将字符串分开,所以每个这样的行都有
ID |  Strings  
123| abc
123| fgh
123| dwd
243| dfs

等等...

这就是我所拥有的。
create table Temp AS   
SELECT ID, strings
From mytable;

SELECT DISTINCT ID, trim(regexp_substr(str, '[^ ]+', 1, level)) str
FROM (SELECT ID, strings str FROM temp) t
CONNECT BY instr(str, ' ', 1, level -1) >0
ORDER BY ID;

任何帮助表示赞赏

最佳答案

这应该可以解决问题:

SELECT DISTINCT ID, regexp_substr("Strings", '[^ ]+', 1, LEVEL)
FROM T
CONNECT BY regexp_substr("Strings", '[^ ]+', 1, LEVEL) IS NOT NULL
ORDER BY ID;

请注意,我也是如何在connect by子句中使用 regexp_substr的。这是为了处理多个空格的情况。

如果每行项目数的上限是可预测的,则可能需要将上面的递归查询的性能与简单的 CROSS JOIN进行比较:
WITH N as (SELECT LEVEL POS FROM DUAL CONNECT BY LEVEL < 10)
-- ^^
-- up to 10 substrings
SELECT ID, regexp_substr("Strings", '[^ ]+', 1, POS)
FROM T CROSS JOIN N
WHERE regexp_substr("Strings", '[^ ]+', 1, POS) IS NOT NULL
ORDER BY ID;

观看 http://sqlfiddle.com/#!4/444e3/1进行现场演示

关于sql - 将字符串拆分成行Oracle SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26407538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com