表中表一字段是存ip的但现要在要查询这个ip的前三段或前二段有没有存在比如:表中已有127.0.0.1记录如果查询前二段127.0.1.6  这样就算重复了,
    查询前三段127.0.0.5  这样就算重复了,数据库是9i 
除了instr 函数 ,还有别的性能更好的函数或其它办法(如改变表结构也可以) 

解决方案 »

  1.   

    比如4段分别为ip1,ip2,ip3,ip4
    select t.*,count()over(partition by ip1,ip2 order by rownum)ct from t
    然后筛选出ct不为1的记录
    上面是前两段的
      

  2.   

    count(1)over(partition by ip1,ip2 )
    吃饭去了,嘿嘿
      

  3.   

    前2段: like '127.0.%',
    前3段: like '127.0.0.%'
    一样可以用到索引,性能比INSTR好, 如果IP是动态的,
    可以用 like IP1||IP2||'%'拼起来,一样可以用到索引。