我正在尝试拆分一个字符串:OK#15#78通过#我想得到字符串的第一部分:好的我尝试了以下查询,但不起作用:
OK#15#78
select apex_string.split('OK#15#78','#')[0] from dual;
接下来我可以尝试什么?
jhkqcmku1#
你可以使用TABLE和rownum:
TABLE
SELECT val FROM (Select rownum AS rn, column_value AS val FROM TABLE(apex_string.split('OK#15#78','#'))) WHERE rn = 1;
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
2条答案
按热度按时间jhkqcmku1#
你可以使用
TABLE
和rownum:nue99wik2#
原始帖子:
更简单的是:
或者更快:
修改后的答案
这里有一个警告:APEX_STRING.SPLIT会导致一个嵌套表,并且无法保证返回项的顺序,因此这实际上不起作用。
应该使用regxp_substr方法