create or replace function(strSource in nvarchar2,strFind in nvarchar2) return number is result number:=0; begin loop pos1=instr(strSource,strFind,1,result+1); exit when pos=0; result=result+1; end loop return result; end;这样试试
create or replace function(strSource in nvarchar2,strFind in nvarchar2) return number is result number:=0; begin loop pos1:=instr(strSource,strFind,1,result+1); exit when pos=0; result:=result+1; end loop return result; end;哈哈 又搞错了 我是初学者 不要见怪
for example :
ifsapp@PRACTICE>select length(trim(translate('asdasdasdasd','bcedfghijklmnopqrstuvwxyz',' '))) a_len from dual; A_LEN
----------
4
介绍一下Translate函数的使用
Translate函数的语法:
translate(char,from_string,to_string)
------------------------------------------------------------------------------------------------------
参数 说明
------------------------------------------------------------------------------------------------------
char 是需要进行替换的字符串。
from_string 是将要被替换的字符串。
to_string 是替代的字符串。请注意,在此处不能为''(空字符串),Oracle把空字符串当
作null来处理,因此,如果to_string为'',则函数返回null。
------------------------------------------------------------------------------------------------------
******************************************************************************************************
------------------------------------------------------------------------------------------------------
Translate函数处理的流程描述:
1.遍历char中的每一个字符(为了方便描述,我们在此处假设定义一个变量Current_Char来存储它)。
2.判断Current_Char是否在from_string中出现?
2.1.如果没有出现,则不做处理。
2.2.如果有出现。
2.2.1.首先获取Current_Char在from_string中的位置Current_Position(表示它是from_string中的第几
个字符)。
2.2.2.然后获得字符串to_string中位置为Current_Position的字符(我们假设定义一个变量Replace_Char
来存储它)。
Note:
1>如果Current_Char在from_string中出现了多次,则Current_Position为找到的第一个相匹配的字
符的位置
例如:
SQL> select translate('ds1231fd','dd','DG') from dual; TRANSLAT
--------
Ds1231fD
2>如果from_string的长度比to_string长,则多出的字符将会被移除。
例如:
SQL> select translate('ds1213fg','dsfg','-') from dual; TRANS
-----
-1213
3>如果from_string的长度比to_string短,则to_string中多出的字符可以忽略,不参与运算。
例如:
SQL> select translate('ds1213fg','ds','DSFG') from dual; TRANSLAT
--------
DS1213fg
2.2.3.用Replace_Char替换掉Current_Char。
3.遍历完后将进行了替换的char输出。
return number
is
result number:=0;
begin
loop
pos1=instr(strSource,strFind,1,result+1);
exit when pos=0;
result=result+1;
end loop
return result;
end;这样试试
return number
is
result number:=0;
begin
loop
pos1:=instr(strSource,strFind,1,result+1);
exit when pos=0;
result:=result+1;
end loop
return result;
end;哈哈 又搞错了 我是初学者 不要见怪
baojianjun(包子)