这个问题在这里已经有了答案:
How to convert comma separated values to rows in oracle?
(5 个回答)
8 个月前关闭。
如何使用 SUBSTR
在 Oracle 中拆分逗号分隔的字符串和 INSTR
.
字符串 '20.4,12.5,3.5,0.2,0.2' .
我尝试使用以下代码,但无法获取第二个逗号后的值。
SELECT substr('20.4,12.5,3.5,0.2,0.2',0,instr('20.4,12.5,3.5,0.2,0.2',',')-1)
value FROM dual -- 1. 20.4
对于第二个值,我在第二个逗号之后获取整个字符串。
SELECT substr('20.4,12.5,3.5,0.2,0.2',instr('20.4,12.5,3.5,0.2,0.2',',')+1,instr('20.4,
12.5,3.5,0.2,0.2',',',2,2)-1) st FROM dual -- result : 12.5,3.5,
我想要每个逗号后的值,比如
20.4
12.5
3.5等。
最佳答案
基于 https://blogs.oracle.com/aramamoo/how-to-split-comma-separated-string-and-pass-to-in-clause-of-select-statement :
首先,我们将形成一个查询,该查询拆分此逗号分隔的字符串并将单个字符串作为行给出。
SQL> select regexp_substr('20.4,12.5,3.5,0.2,0.2','[^,]+', 1, level) from dual
connect by regexp_substr('20.4,12.5,3.5,0.2,0.2', '[^,]+', 1, level) is not null;
REGEXP_SUBSTR('20.4,1
---------------------
20.4
12.5
3.5
0.2
0.2
上面的查询遍历逗号分隔的字符串,搜索逗号 (,),然后通过将逗号视为分隔符来拆分字符串。每当遇到分隔符时,它都会将字符串作为一行返回。
关于string - 如何在 Oracle 中拆分逗号分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44260177/