规则如下:
依据这个规则、只有 3 种输出:大写、小写、首字母大写
测试如下:
sys@ORCL> select to_char(sysdate,'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
June
sys@ORCL> select to_char(sysdate,'MOnth') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
JUNE
sys@ORCL> select to_char(sysdate,'month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
june
下面做个测试、确认这个规则对函数索引的影响:
sys@ORCL> drop table t purge;
Table dropped.
sys@ORCL> create table t as select object_id,sysdate+rownum as create_date from dba_objects where rownum<=5000;
Table created.
sys@ORCL> analyze table t compute statistics;
Table analyzed.
sys@ORCL> set autot trace exp
sys@ORCL> select * from t where to_char(create_date,'yyyy-mm-dd')='2011-06-02';
Execution Plan
----------------------------------------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 50 | 500 | 5 (20)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| T | 50 | 500 | 5 (20)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(TO_CHAR(INTERNAL_FUNCTION("CREATE_DATE"),'yyyy-mm-dd')='20
11-06-02')
sys@ORCL> create index idx_t on t (to_char(create_date,'YYYY-MM-DD'));
Index created.
sys@ORCL> analyze index idx_t validate structure;
Index analyzed.
sys@ORCL> select * from t where to_char(create_date,'yyyy-mm-dd')='2013-06-02';
Execution Plan
----------------------------------------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 50 | 500 | 5 (20)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| T | 50 | 500 | 5 (20)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(TO_CHAR(INTERNAL_FUNCTION("CREATE_DATE"),'yyyy-mm-dd')='20
13-06-02')
sys@ORCL> set autot off
sys@ORCL> create index idx_t_001 on t (to_char(create_date,'yyyy-mm-dd'));
Index created.
sys@ORCL> analyze index idx_t_001 validate structure;
Index analyzed.
sys@ORCL> select * from t where to_char(create_date,'yyyy-mm-dd')='2013-06-02';
no rows selected
sys@ORCL> set autot trace exp
第一种情况:小写
sys@ORCL> select * from t where to_char(create_date,'yyyy-mm-dd')='2013-06-02';
Execution Plan
----------------------------------------------------------
Plan hash value: 512271049
-----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 50 | 500 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| T | 50 | 500 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_T_001 | 20 | | 1 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access(TO_CHAR(INTERNAL_FUNCTION("CREATE_DATE"),'yyyy-mm-dd')='2013-06-02'
)
第二种情况:首字母大写
sys@ORCL> select * from t where to_char(create_date,'yyyy-mm-Dd')='2013-06-02';
Execution Plan
----------------------------------------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 50 | 500 | 5 (20)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| T | 50 | 500 | 5 (20)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(TO_CHAR(INTERNAL_FUNCTION("CREATE_DATE"),'yyyy-mm-Dd')='20
13-06-02')
第三种情况:大写
sys@ORCL> select * from t where to_char(create_date,'yyyy-mm-DD')='2013-06-02';
Execution Plan
----------------------------------------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 50 | 500 | 5 (20)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| T | 50 | 500 | 5 (20)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(TO_CHAR(INTERNAL_FUNCTION("CREATE_DATE"),'yyyy-mm-DD')='20
13-06-02')
分享到:
相关推荐
如何计算数据块中某个字段的位置优化小技巧 如何计算索引块中某个字段的位置优化小技巧 自己动手写一个dul优化小技巧 bootstrap$的访问优化小技巧 unloadBlock函数优化小技巧 unloadRow函数5月29日 突破困局优化小...
说明: 指定与 TO_CHAR 和 TO_DATE 函数一同使用的默认日期格式。该参数的默认值由 NLS_TERRITORY 确定。该参数的值可以是包含在双引号内的任何有效的日期格式掩码。例如: ''MMM/DD/YYYY''。 值范围: 任何有效的日期...
当where子句对某一列使用函数时,除非利用这个简单的技术强制索引,否则Oracle优化器不能在查询中使用索引。 通常情况下,如果在WHERE子句中不使用诸如UPPER、REPLACE 或... 大小写混合情况 在讨论由于函数修改了
对Oracle共享池和缓冲区中的Sql必须要大小写都完全用上才能够匹配上 2.顺序问题 Oracle按照从右到左的顺序对数据表进行解析。因此From最后面的表为基础表,一般要选择记录数最少的表作为基础表。 对于Where...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
6.2.5 深入理解DBMS_XPLAN的细节 156 6.2.6 使用计划信息来解决问题 161 6.3 小结 169 第7章 高级分组 170 7.1 基本的GROUP BY用法 171 7.2 HAVING子句 174 7.3 GROUP BY的“新”功能 175 7.4 GROUP BY的CUBE...
15 管理用户 目标 15-2 用户和安全 15-3 数据库方案 15-4 检查创建用户 15-5 创建新用户:数据库验证 15-6 创建新用户:操作系统验证 15-8 改变用户的表空间限额 15-9 删除用户 15-10 获取用户的信息 15-11 小结 15-...
第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...
’ 输入job是注意大小写 (2) edit 说明:该命令可以编辑指定的sql脚本 案例: sql>edit d:\a.sql 5.显示和设置环境变量 概述:可以用来控制输出的各种格式,set show 如果希望永久的保存相关的设置,可以去修改 ...
4.3字符串是大小写敏感的,在比较时严格区分大小写 8 4.4 where子句后面可以跟多个条件表达式 8 4.5 between and运算符 8 4.6 in运算符(多值运算符) 8 4.7 like运算符 9 4.8 is null运算符 9 4.9比较和逻辑运算符...
10.1.3 使用大小写转换函数 349 10.1.4 使用字符操作函数 350 10.1.5 使用数字函数 353 10.1.6 使用日期 355 10.2 描述SQL中可用的各种类型的转换函数 359 10.3 使用TO_CHAR、TO_NUMBER 和TO_DATE转换函数 361...
(5)加上/去掉注释标记、加上/去掉引号、增加/减少缩进、大小写转换等 o 运行语句 “desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.]objectName[@dbLink]”,如果是一表名,则能清楚地显示表...
(5)加上/去掉注释标记、加上/去掉引号、增加/减少缩进、大小写转换等 运行语句 “desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.] objectName[@dbLink]”,如果是一表名,则能清楚地显示表的列...
(5)加上/去掉注释标记、加上/去掉引号、增加/减少缩进、大小写转换等 运行语句 “desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.]objectName[@dbLink] ”,如果是一表名,则能清楚地显示表的列...
第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...
10.1.3 使用大小写转换函数 349 10.1.4 使用字符操作函数 350 10.1.5 使用数字函数 353 10.1.6 使用日期 355 10.2 描述SQL中可用的各种类型的转换函数 359 10.3 使用TO_CHAR、TO_NUMBER 和TO_DATE转换函数 361...