给你个例子参考: DECLARE L_V VARCHAR2(200) := '"A","C","D"'; TYPE ABC IS TABLE OF VARCHAR2(5) INDEX BY BINARY_INTEGER; L_A ABC; L_RETAIN VARCHAR2(200); L_I INT := 1; BEGIN LOOP IF INSTR(L_V, ',', 1) > 1 THEN L_A(L_I) := SUBSTR(L_V, 1, INSTR(L_V, ',', 1) - 1); L_V := SUBSTR(L_V, INSTR(L_V, ',', 1) + 1); ELSE L_A(L_I) := L_V; EXIT; END IF; L_I := L_I + 1; END LOOP; L_A(5) := '"I"'; --插入 L_A(2) := '"U"'; --更新 FOR I IN L_A.FIRST .. L_A.LAST LOOP IF L_A.EXISTS(I) THEN DBMS_OUTPUT.PUT_LINE(L_A(I)); END IF; END LOOP; END; / 输出: "A" "U" "D" "I"
我想要的结果是
"A","B","C","D"
或
"A","C","D","E" 第一个串和你想要的结果有啥区别啊
DECLARE
L_V VARCHAR2(200) := '"A","C","D"';
TYPE ABC IS TABLE OF VARCHAR2(5) INDEX BY BINARY_INTEGER;
L_A ABC;
L_RETAIN VARCHAR2(200);
L_I INT := 1;
BEGIN
LOOP
IF INSTR(L_V, ',', 1) > 1 THEN
L_A(L_I) := SUBSTR(L_V, 1, INSTR(L_V, ',', 1) - 1);
L_V := SUBSTR(L_V, INSTR(L_V, ',', 1) + 1);
ELSE
L_A(L_I) := L_V;
EXIT;
END IF;
L_I := L_I + 1;
END LOOP;
L_A(5) := '"I"'; --插入
L_A(2) := '"U"'; --更新
FOR I IN L_A.FIRST .. L_A.LAST LOOP
IF L_A.EXISTS(I) THEN
DBMS_OUTPUT.PUT_LINE(L_A(I));
END IF;
END LOOP;
END;
/
输出:
"A"
"U"
"D"
"I"