如何得到两个字符串长度只相差一位,并且一个字符串所含的字符是另一个字符串的字符的一个子集。
‘mold’,‘mould’这两个字符串就满足要求。

解决方案 »

  1.   

    str1 like str2||'_' or str1 like '_'||str2
    or str2 like str1||'_' or str2 like '_'||str1
      

  2.   

    if(instr(trim(srcStr),trim(desStr))>=1 and length(trim(srcStr))=length(trim(desStr))) then
    ....
    去掉了空格。
      

  3.   

    select count(1)
      from (select Str
              from (select substr('&Short',level,1) Str
                      from dual
                   connect by substr('&Short',level,1) is not null)
             where Str IN 
             (select substr('&Long',level,1)
                from dual
             connect by substr('&Long',level,1) is not null)) 
    having count(1) = length('&Short') 
    and length('&Long') - length('&Short') = 1;
      
      

  4.   

    str1和str2代指2个字符串
    由于一个为另一个的子集,且长度差1,那么用模糊匹配的_就行了,多出来的那个字符可能在左,也可能在右
    第二行的2个or,是因为没有指定长的那个字符串是str1,还是str2