日期:2014-05-17  浏览次数:20888 次

to_char的返回类型
select * from emp1 where to_char(hiredate,'mm')=2
请教一下,to_char的返回类型和2的类型,他们怎么能判断相等

------解决方案--------------------
上面这种情况 oracle一般都会通过隐式转换 将to_char(hiredate,'mm')转换成number类型

如果是to_char(hiredate,'mm')='2' 那么就不用转换 也查不出来值 

一般常见的隐式转换有3种:
1、在select语句中,oracle会把字段的数据类型隐式转换为变量的数据类型。
2、在字符型和数值型的值做比较时,oracle会把字符型的值隐式转换为数值型
3、在字符型和日期型的数据做比较时,oracle会把字符型转换为日期型

 当出现转换不了的时候 就会报错 所以很多报错是在转换失败的情况下产生。