比如
function f('a',''ghgaguygag')=2

解决方案 »

  1.   

    自己写函数吧,还有f('aa','aaaa')=?
      

  2.   

    利用LPAD把该字符去掉然后统计他的长度,原先长度减去用空字符替代后的长度就是字符出现次数
      

  3.   

    使用translate函数就可以了
    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输出。
      

  4.   

    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;这样试试
      

  5.   

    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;哈哈 又搞错了 我是初学者 不要见怪
      

  6.   

    感谢“包建军”
    baojianjun(包子)