select table_name from user_tables where table_name like 'JIFEI.BILL_E_20_' || to_char(sysdate,'yyyymmdd')
解决方案 »
- 紧急求助 oracle到mysql转换语句问题
- DBLINK远程库表结构修改导致本地库调用此表的过程(主要是用过远程表同义词的行变量赋值)出现ORA-00932: 数据类型不一致: 应为 -, 但却获得 -
- ora-01034 ora-27101
- 各位大虾帮忙分析一下为什么第二个语句用不上索引?
- 请高手帮我优化一下这个sql语句
- 求一条SQL语句 关于日期对应日期
- oracle中能不能用SQL实现按照5的所有倍数分组
- RECOVERY LAB - 3 (LOSS DATAFILE WITHOUT BACKUP USING OLD CONTROL FILE)
- 有关imp使用方法
- 紧急求救,请教各位大侠关于用java读写clob字段的问题!!在线等待答案
- 10G客户端连不上9i的数据库
- 在ORACLE中怎么更改字段名?
----------
这样不行吧,to_char(sysdate,'yyyymmdd')是今天的日期。
where ... AND 后8位 in (select 日期 from 日期表)
这样处理。
( 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_%' 没有测试,不敢肯定可以
这样不行吗?
这样不行吗?
----
你这样结果被扩大了,如:
JIFEI.BILL_E_20_aaa
JIFEI.BILL_E_20_bbb
JIFEI.BILL_E_20_ccd
也找出来了,而搂主要的是"年月日"格式的。
( 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
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'
;