前几天,要建立一个函数索引,遇到的一些奇怪问题,讨论链接在
这里:http://www.itpub.net/480995.html
yangtingkun给出了很好的解析与例子记录如下:
http://blog.itpub.net/post/468/50898
转载:明白了Oracle所定义的规则。由于英文会出现首字母大写的情况,所以Oracle在判定的时候首先判断第一位的大小写状态,如果是小写,就不继续判断后面的内容了,而把整个字符串都当作小写。如果第一位是大写,Oracle继续判断第二位,如果也是大写,那么Oracle就把整个字符串都当作大写,如果第二位是小写,则Oracle认为这种情况是首字母大写,就把第一个字母当作大写,而剩余字符做小写出来。
如果有兴趣可以对SELECT TO_CHAR(SYSDATE, 'Month') FROM DUAL;进行测试,不管给出的Month的大小写如何变,Oracle的输出结果只有三种,大写、小写和首字母大写。
SQL> SELECT TO_CHAR(SYSDATE, 'Month') FROM DUAL;
TO_CHAR(S
---------
January
SQL> SELECT TO_CHAR(SYSDATE, 'MOnth') FROM DUAL;
TO_CHAR(S
---------
JANUARY
SQL> SELECT TO_CHAR(SYSDATE, 'MoNTH') FROM DUAL;
TO_CHAR(S
---------
January
SQL> SELECT TO_CHAR(SYSDATE, 'mONTH') FROM DUAL;
TO_CHAR(S
---------
january