string - 如何在 Oracle 中拆分逗号分隔的字符串

标签 string oracle substr

这个问题在这里已经有了答案:





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/

相关文章:

c - 在 C/C++ 中使用计数器变量访问字符串

java - ORA-04054 : database link GMAIL. COM 不存在

C++ 从字符串中选择 N 个字符

php - 如何在 PHP 上使用 substr_count 计算阿拉伯语子字符串

javascript - 为什么有两种不同的方法 slice() 和 substring()?

java - 我无法在微调器中设置 String[] 值

java - 在终端中编译 Java 会在字符串中出现非法字符错误

javascript - 如何在 JS 中从数组中切出值

oracle - 如果 'orderby'值相同,为什么Oracle返回特定序列?

mysql - 错误消息 "ORA-02270: no matching unique or primary key for this column-list"