表T1的结构如下:
NAME  SAL     DATE
AAA   4000    20050102
AAA   3500    20051201
BBB   3800    20060404SELECT * FROM T1 SUBSTR(DATE,1,6) >= 变量月份这个时候,虽然建了DATE的索引,它也不走了,怎么办?
谢谢!

解决方案 »

  1.   

    如果DATE列为日期类型:SELECT * FROM T1 WHERE TO_CHAR(DATE,'YYYYMM')>=变量月份
      

  2.   

    SELECT * FROM T1 where to_number(SUBSTR(DATE,1,6))>  =变量月份
    试一试,但是还是不明白你说的意思.
      

  3.   

    SELECT * FROM T1 WHERE DATE >= 变量月份 || '01'如果你只是在DATE上建了普通索引,那么SUBSTR会屏蔽该索引,试试我的办法。你的DATE应该是VARCHAR2才对吧?如果是数值型,那就另外一回事了。SELECT * FROM T1 WHERE DATE >= 变量月份 * 100 + 1