以oracle形式获取逗号分隔的数据

时间:2018-08-21 06:20:51

标签: sql oracle split oracleforms

我有一个orderno字段,其中的数据格式为

"PUR/0012/17-18","PUR/0013/17-18"

我想获取用逗号分隔的不同orderno

我使用的查询是

SELECT REGEXP_SUBSTR('PUR/0012/17-18','PUR/0013/17-18','[^,]+', 15, LEVEL) 
FROM dual
CONNECT BY REGEXP_SUBSTR('PUR/0012/17-18','PUR/0013/17-18', '[^,]+', 15, LEVEL) IS NOT NULL )  

但是它显示错误。

1 个答案:

答案 0 :(得分:2)

我能想到的两件事。

第一个很明显-您编写的查询无效。应该是

SQL> SELECT REGEXP_SUBSTR('PUR/0012/17-18,PUR/0013/17-18','[^,]+', 1, LEVEL) result
  2  FROM dual
  3  CONNECT BY REGEXP_SUBSTR('PUR/0012/17-18,PUR/0013/17-18', '[^,]+', 1, LEVEL) IS NOT NULL;

RESULT
-----------------------------
PUR/0012/17-18
PUR/0013/17-18

SQL>

一旦您对其进行了修复,但仍然无法使用,就是您没有提到所使用的Oracle Forms版本的事实;也许它是不支持正则表达式的版本之一。在这种情况下,您应该创建一个存储函数,该函数会将所需的结果返回到表单中。由于所有 calculation 都在数据库中执行,因此可以正常工作。