oracle 如何使用apex_string.split?

km0tfn4u  于 2023-05-28  发布在  Oracle
关注(0)|答案(2)|浏览(155)

我正在尝试拆分一个字符串:OK#15#78通过#
我想得到字符串的第一部分:好的
我尝试了以下查询,但不起作用:

select apex_string.split('OK#15#78','#')[0] from dual;

接下来我可以尝试什么?

jhkqcmku

jhkqcmku1#

你可以使用TABLE和rownum:

SELECT val
FROM (Select rownum AS rn, column_value AS val
     FROM TABLE(apex_string.split('OK#15#78','#')))
WHERE rn = 1;
nue99wik

nue99wik2#

原始帖子:

更简单的是:

SELECT COLUMN_VALUE val, ROWNUM
FROM apex_string.split('OK#15#78','#')
WHERE ROWNUM = 1;

或者更快:

SELECT COLUMN_VALUE val
FROM apex_string.split('OK#15#78','#')
FETCH FIRST 1 ROWS ONLY

修改后的答案

这里有一个警告:APEX_STRING.SPLIT会导致一个嵌套表,并且无法保证返回项的顺序,因此这实际上不起作用。
应该使用regxp_substr方法

SELECT val c
FROM 
(
   (SELECT regexp_substr('OK#15#78','[^#]+', 1, level) 
    FROM DUAL
    CONNECT BY regexp_substr(, '[^#]+', 1, level) IS NOT NULL)
)
FETCH FIRST 1 ROWS ONLY

相关问题