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;