Sam*_*Sam 1 string oracle substr
如何使用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
Run Code Online (Sandbox Code Playgroud)
对于第二个值,我在第二个逗号后得到整个字符串.
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,
Run Code Online (Sandbox Code Playgroud)
我想要每个逗号之后的值,比如
20.4
12.5
3.5等等.
首先,我们将形成一个查询,它将此逗号分隔的字符串拆分并将各个字符串作为行.
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
Run Code Online (Sandbox Code Playgroud)
上面的查询遍历逗号分隔的字符串,搜索逗号(,)然后通过将逗号视为分隔符来拆分字符串.只要它到达分隔符,它就会将字符串作为一行返回.