`
linuxstuding
  • 浏览: 1228545 次
文章分类
社区版块
存档分类
最新评论

Oracle的存储过程中以特定字符分隔的字符串的处理

 
阅读更多

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;

相关知识:

================================================================

Oracle中INSTR方法

INSTR方法的格式为
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)

例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。

默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。

所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring"FROM DUAL的显示结果是

Instring
——————
14
================================================================
Oracle/PLSQL: While Loop

The syntax for the WHILE Loop is:
WHILE condition
LOOP
{.statements.}
END LOOP;
You would use a WHILE Loop when you are not sure how many times you will execute the loop body. Since the WHILE condition is evaluated before entering the loop, it is possible that the loop body may not execute even once.
译:当你不确定循环体有多少次的时候,可以使用WHILE LOOP。因为在进入循环以前,WHILE的条件是先给的,因为可能循环体不止执行一次。
Let's take a look at an example:
WHILE monthly_value <= 4000
LOOP
monthly_value := daily_value * 31;
END LOOP;
In this example, the WHILE Loop would terminate once the monthly_value exceeded 4000.
译:在该示例中,WHILE循环将会在monthly_value的值达到4000时终止。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics