select table_name from user_tables where table_name like  'JIFEI.BILL_E_20_' || to_char(sysdate,'yyyymmdd')

解决方案 »

  1.   

    select table_name from user_tables where table_name like  'JIFEI.BILL_E_20_' || to_char(sysdate,'yyyymmdd')
    ----------
    这样不行吧,to_char(sysdate,'yyyymmdd')是今天的日期。
      

  2.   

    不知道oracle中有没有判断是否是日期的函数,那样可以取后8位判断是否是日期或是是否可以转换为日期。
      

  3.   

    如果你的日期yyyymmdd范围不广,可以建立一个存放日期的表,就一个字段。然后可以通过
    where ... AND 后8位 in (select 日期 from 日期表)
    这样处理。
      

  4.   

    select table_name from user_tables where table_name like  'JIFEI.BILL_E_20_%'
      

  5.   

    SELECT table_name FROM user_tables WHERE
    ( SUBSTR(table_name,1,4) BETWEEN '1900' AND '2004' ) AND
     (SUBSTR(table_name,5,2) BETWEEN '01' AND '12') AND
     (SUBSTR(table_name,7,2) BETWEEN '01' AND '30') AND  
     table_name like  'JIFEI.BILL_E_20_%' 没有测试,不敢肯定可以
      

  6.   

    select table_name from user_tables where table_name like  'JIFEI.BILL_E_20_%'
    这样不行吗?
      

  7.   

    select table_name from user_tables where table_name like  'JIFEI.BILL_E_20_%'
    这样不行吗?
    ----
    你这样结果被扩大了,如:
    JIFEI.BILL_E_20_aaa
    JIFEI.BILL_E_20_bbb
    JIFEI.BILL_E_20_ccd
    也找出来了,而搂主要的是"年月日"格式的。
      

  8.   

    SELECT table_name FROM user_tables WHERE
    ( SUBSTR(table_name,1,4) BETWEEN '1900' AND '2004' ) AND
     (SUBSTR(table_name,5,2) BETWEEN '01' AND '12') AND
     (SUBSTR(table_name,7,2) BETWEEN '01' AND '30') AND  
     table_name like  'JIFEI.BILL_E_20_%' 
    --------
    SUBSTR(table_name,1,4)中的table_name应该是要取得后8位。
    SUBSTR(table_name,7,2) BETWEEN '01' AND '30'不对,还有31,而且你这样组合出来的日期不一定是实际存在的有效日期,如2004-02-30,2004-04-31
      

  9.   

    (SUBSTR(table_name,7,2) BETWEEN '01' AND '30') 是笔误,2004-02-30,2004-04-31这样的日期存在吗?不存在,那怎么会有相应的记录呢,除非后缀不是日期格式
      

  10.   

    建一个自定义函数
    create or replace function is_date(
      p_str varchar2, 
      p_format varchar2 default 'yyyymmdd'
    ) return varchar2 is
      dummy date;
    begin
      dummy := to_date(p_str, p_format);
      return 'Y';
    exception when value_error then
      return 'N';
    end;
    /
    然后使用查询:
    select ... 
    where table_name like ...
      and is_date(substr(table_name ...))='Y'
    ;