我有一个过程,我将输入参数作为字符串数组。
此字符串包含5-Deal deleted
我想将此varchar
拆分为5并删除交易。
此处拆分条件为-
答案 0 :(得分:2)
尝试使用regexp_substr
:
select regexp_substr ('5-Deal deleted' , '[^-]+', 1, rownum) split
from dual
connect by level <= length (regexp_replace ('5-Deal deleted' , '[^-]+')) + 1;
然后您可以将BULK COLLECT INTO
用于存储到变量
答案 1 :(得分:1)
对于这么简单的任务,我会选择SUBSTR
和INSTR
。 REGULAR EXPRESSION
会占用太多资源。
INSTR
会找到-
的位置,即连字符,而SUBSTR
会选择所需的字符串部分。
或者,
如果您的示例数据是所有行的样子,那么,只需从字符串中提取DIGIT
和ALPHA
,然后只提取concatenate
。这显然需要REGULAR EXPRESSION
。
答案 2 :(得分:1)
试试这个:
SELECT SUBSTR ('5-Deal deleted', 1, INSTR ('5-Deal deleted', '-') - 1)
AS FIRST,
SUBSTR ('5-Deal deleted', INSTR ('5-Deal deleted', '-') + 1) AS second
FROM DUAL