可以这样:
select * from tablename where instr(colname,'%')>1 and instr(colname,'_')>1;

解决方案 »

  1.   

    应该加上等于号。
    select * from tablename where instr(colname,'%')>=1 and instr(colname,'_')>=1;
      

  2.   

    看来select like '%%%'的办法是彻底不能使用了?
      

  3.   

    select * from tablename where instr(colname,'25')>=1 and instr(colname,'_')>=1;
    这么做索引是用不上了
      

  4.   

    select * from tablename where (colname like '%'||:var||'%')
    注意:  :var是前台开发工具变量,如果要实现你的功能请给:var赋值'%'或者'-',这种方法是"%"和"-"一次只筛选其一的数据记录,要想"%"和"-"同时筛选出来,请用
    select * from tablename where(colname linke "%"||'%' ) or (colname like "-"||'%')
      

  5.   

    使用oracle的escapte选项
    SELECT ename 
        FROM emp 
        WHERE ename LIKE '%A\_B%' ESCAPE '\';