我现在在oracle中写了一个触发器,其中有一个变量需要把它拆开,然后分别做比较比如:"aaa,bbb,wasd,cdes"这样一个字符串。还有一个值,要和其中的每一段做比较(以","分割)该怎么循环比较?大侠们,帮帮忙,急!!!
解决方案 »
- 紧急求教:Statement.executeQuery查询Timestamp
- 请教Oracle:ORA-01033: ORACLE initialization or shutdown in progress
- 怎样实现多表中数据相加
- 求pl/sql语句子查询
- 请问我的INTERNAL密码忘记了,怎么启动数据库呢?
- oracle9i默认是否基于成本优化? 基于成本优化是否定期手工要对数据库进行分析??怎样分析?谢谢大家!
- LOB需在LINUX安装时设置吗?
- 請高手指点:我是刚接触Oracle的新手。推荐几本Oracle的入门书籍和一些网站。
- dbms_sql和execute immediate执行动态sql谁的效率高?
- oracle IN函数的问题,大佬们帮下忙,困扰好久
- 跪求ORACLE10G补丁FOR WINDOWS2003 64-BIT ITANIUM
- oracle用sql语句导出excel
if substr(字符串,i,1)=',' then
抓值!
end if
loop
select * from
(
select 'aaa,bbb,wasd,cdes' as name from dual
) a
where instr(','||name||',',','||'aaa'||',')>0
l_pos1 number := 1;
l_pos2 number := 1;
l_str varchar2(100) := 'aaa,bbb,wasd,cdes';
l_buff varchar2(30);
begin
while l_pos1 < length(l_str) loop
l_pos2 := instr(l_str, ',', l_pos1, 1);
if l_pos2 = 0 then
dbms_output.put_line(substr(l_str,
l_pos1,
length(l_str) - l_pos1 + 1));
exit;
end if;
l_buff := substr(l_str, l_pos1, l_pos2 - l_pos1);
dbms_output.put_line(l_buff);
l_pos1 := l_pos2 + 1;
end loop;
end;一个注意点,如果你改写成方法的话,那么一定要先判断传入的字符串是否是否为空,或者不符合条件
如果也要判断bbb wasd,cdes 不是INSTR都有一个一个去执行,那如果传入的字符不定长,那就麻烦了!不建议用楼上的方法!我的思路和majy一样! 因为这个处理不定长的字符串传入!
上面几楼说的,都是只能适应简单情况,如果字符稍微比较多一些的话,可能就有点问题。
而在java中只用开源的,则能够很容易导出需要的内容.
http://blog.csdn.net/hhuck/archive/2008/10/27/3160450.aspx