如何在 Oracle 中拆分逗号分隔的字符串
How to Split a comma separated string in Oracle
如何使用 SUBSTR
和 INSTR
.
在 Oracle 中拆分逗号分隔的字符串
字符串 '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等等。
首先,我们将形成一个查询,拆分这个逗号分隔的字符串并将各个字符串作为行给出。
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
以上查询遍历逗号分隔的字符串,搜索逗号 (,),然后通过将逗号视为分隔符来拆分字符串。它 returns 字符串作为一行,每当它遇到分隔符时。
You can also check for a specific occurrence, sample, ever second occurrence between comma.
SQL> select regexp_substr('20.4,12.5,3.5,0.2,0.2','[^,]+[^,]', 1,2 ) as 2nd_occur
from dual;
", 1,2 )" -- You can replace this query part to choose with occurrence you want, like
", 1,3 )" -- for third occurrence.`
Output:
2nd_occur
---------
12.5
如果您的数据库中安装了 APEX 5.1 或更高版本,您可以使用 apex_string.split :
非常优雅地解决这个问题
select column_value
from table(apex_string.split('20.4,12.5,3.5,0.2,0.2', ','))
如何使用 SUBSTR
和 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等等。
首先,我们将形成一个查询,拆分这个逗号分隔的字符串并将各个字符串作为行给出。
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
以上查询遍历逗号分隔的字符串,搜索逗号 (,),然后通过将逗号视为分隔符来拆分字符串。它 returns 字符串作为一行,每当它遇到分隔符时。
You can also check for a specific occurrence, sample, ever second occurrence between comma.
SQL> select regexp_substr('20.4,12.5,3.5,0.2,0.2','[^,]+[^,]', 1,2 ) as 2nd_occur
from dual;
", 1,2 )" -- You can replace this query part to choose with occurrence you want, like
", 1,3 )" -- for third occurrence.`
Output:
2nd_occur
---------
12.5
如果您的数据库中安装了 APEX 5.1 或更高版本,您可以使用 apex_string.split :
非常优雅地解决这个问题select column_value
from table(apex_string.split('20.4,12.5,3.5,0.2,0.2', ','))