我现在在oracle中写了一个触发器,其中有一个变量需要把它拆开,然后分别做比较比如:"aaa,bbb,wasd,cdes"这样一个字符串。还有一个值,要和其中的每一段做比较(以","分割)该怎么循环比较?大侠们,帮帮忙,急!!!
解决方案 »
- oracle怎么实现中文全文检索
- 修改关联到两个表,求救
- 急问几个SQL怎么写?
- 急!哪位高手帮忙把这个函数由SQL转为Oracle的版本
- expdp导出表但本地磁盘空间不足
- oracle调用utl_http生成soap,为什么中文是乱码?并且不能带&符?那位大侠帮忙看看啊
- pl/sql 如何将查询结果集放在数组中
- oracle支持递归触发器么?
- 关于同一个SQL语句,同一程序运行速度相差很远的原因
- 11G控件文件丢失,重建控制文件提示“SP2-0042: 未知命令 "DATAFILE" - 其余行忽略。”
- 跪求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