库中某一字段值f1为 
1060-1061-1065 
如何判断 
fl的左边4位在 
str= "1053-1060-1075 "     (这个字符串是组合的) where   left(f1,4)   in(str) 好像不能用。。

解决方案 »

  1.   

    函数INSTR会告诉用户,其中的一个字符串(参数)是否在另一个字符串(也是参数)当中。   
      其具体的语法格式如下:   
      INSTR(string,substring[,start[,occurrence]])   
      其中:   
      string 待查询的字符串   
      substring 正在搜索的字符串   
      start 说明开始搜索的字符位置。默认值是1,就是说,搜索将从字符串的第一个字符开始。如果,参数为负 则表示搜索的位置从右边开始计算,而不是默认的从左边开始   
      occurrence 指定试图搜索的子串的第几次出现,默认值是1,意 味着希望其首次出现   
      该函数反馈一索引顺序值,在该位置发现了要搜索的子串。下面的例子指出了INSTR函数的使用情况:   
      INSTR(‘AAABAABA’,’B’)=4   
      INSTR(‘AAABAABA’,’B’,1,2)=7select   *   from   dual   where   instr( "1053-1060-1075"  ,substr(f1,1,4))<>0
    我试验了下,如果包含有在dual可以查询到一个x的值,没有的话,查询不到值
      

  2.   

     select instr('1053-1060-1075',substr('1060-1016-1065',0,4),0,0) from dual;substr('1060-1016-1065',0,4)是取得f1的左边4位instr是在第一个字符中,寻找第二个字符的位置,
    如果大于0,测试位置,如果为0则为没有找到。比如上面的查询得到的结果是6,
    那么就是找到了。