DECLARE
S VARCHAR2(200);
T VARCHAR2(10000);
BEGIN
T := '苏F14898,苏F14899,苏F14900,苏F14901,苏F14902,苏F14903';
--DBMS_OUTPUT.PUT_LINE('第几个位置:' || INSTR(T, ','));
--DBMS_OUTPUT.PUT_LINE('取得的字符串:' || SUBSTR(T, INSTR(T, ',') + 1));
--S := SUBSTR(T, INSTR(T, ',') + 1);
--DBMS_OUTPUT.PUT_LINE('S:' || S);
WHILE INSTR(T, ',') > 0 LOOP
S := TRIM(SUBSTR(T, 1, INSTR(T, ',') - 1));
DBMS_OUTPUT.PUT_LINE('S:' || S);
T := SUBSTR(T, INSTR(T, ',') + 1);
END LOOP;
END;
相关知识:
================================================================
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。
默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。
所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL的显示结果是
Instring
——————
14
LOOP
{.statements.}
END LOOP;
LOOP
monthly_value := daily_value * 31;
END LOOP;
本文介绍如何使用 Oracle PL/SQL 中的 INSTR 函数和 WHILE 循环来逐个提取逗号分隔的字符串,并展示了一个具体的例子。通过 INSTR 函数找到逗号的位置并使用 SUBSTR 截取子串。
195

被折叠的 条评论
为什么被折叠?



