在oracle中如何得到一个字符串在另一个字符串出现的次数
解决方案 »
- oracle sql groupby后 无记录 怎么使count()=0
- 如何将ORACLE定期导入到EXCEl中
- 下载oracle的哪个版本合适
- oracle函数问题,恳请各位高手帮忙解答
- oracle 简单问题
- 求一SQL语句!!
- 求一个分组的sql语句
- oracle修改表中记录时出的错误
- 请问大家在PL/SQL里面怎么用 SQL Window啊?能介绍几个快捷键吗
- 菜鸟问题,用conn sys/change_on_install@test as sysdba 连接不上服务器上的数据库
- 关于windows 2003上安装RAC事vip ip的问题。
- 求详细步骤解决“所有的重做日志都需要归档”的问题
from dual;
select instr('000111111111','1') from dual;
我想把上面字符串'000111111111'中1的位置都记录到一个字段中,怎么弄呢
为什么不行啊。select (length('asdfsdfasdf')-length(replace('asdfsdfasdf','asd',''))) / length('asd') xxx from dual; 结果不是2吗?
select instr('000111111111','1') from dual; 4#5#6#7#8#9#10#11#12
from (select decode(substr('000111111111', b.rid, 1), '1', b.rid, 0) val,
b.rid,
b.rid - 1 pid
from dual a,
(select rownum rid
from dual
connect by rownum <= length('000111111111')) b
where decode(substr('000111111111', b.rid, 1), '1', b.rid, 0) > 0)
start with rid = instr('000111111111', '1')
connect by prior rid = pid;PATH
-----------------------------------
4#5#6#7#8#9#10#11#12
RETURN VARCHAR2
AS
l_str VARCHAR2(1000);
l_count NUMBER(4) := 1;
begin
FOR i IN 1..LENGTH(p_str) LOOP
SELECT INSTR(p_str, p_substr, l_count)
INTO l_count
FROM DUAL; IF l_count = 0 THEN
EXIT;
END IF;
l_str := l_str || '#' ||l_count; l_count := l_count + 1; END LOOP;
RETURN l_str;
END;
/