Oracle 获取字符串出现的所有位置长度
时间: 2024-01-30 22:03:38 浏览: 67
在 Oracle 中,可以使用 INSTR 函数来获取字符串中子字符串出现的位置。该函数返回子字符串在字符串中第一次出现的位置,如果未找到,则返回 0。
要获取字符串中子字符串出现的所有位置,可以使用一个循环来遍历字符串,每次查找子字符串的位置并将其存储到一个数组中。以下是一个示例代码:
```
DECLARE
str VARCHAR2(100) := 'hello world hello hello';
substr VARCHAR2(10) := 'hello';
pos_arr SYS.DBMS_UTILITY.LNAME_ARRAY;
pos_count NUMBER;
BEGIN
pos_count := 0;
FOR i IN 1..LENGTH(str) LOOP
IF INSTR(str, substr, i, 1) > 0 THEN
pos_count := pos_count + 1;
pos_arr(pos_count) := INSTR(str, substr, i, 1);
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Substring ' || substr || ' appears at:');
FOR i IN 1..pos_count LOOP
DBMS_OUTPUT.PUT_LINE('Position ' || i || ': ' || pos_arr(i));
END LOOP;
END;
```
该代码将字符串 `str` 和子字符串 `substr` 定义为变量,并声明一个存储位置的数组 `pos_arr` 和一个计数变量 `pos_count`。然后,使用一个循环来遍历字符串中的所有字符,并检查子字符串是否出现在该位置。如果是,则将该位置添加到数组中,并增加计数器。最后,使用另一个循环来遍历数组并输出每个位置。
阅读全文