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

解决方案 »

  1.   

    上面这种情况 oracle一般都会通过隐式转换 将to_char(hiredate,'mm')转换成number类型如果是to_char(hiredate,'mm')='2' 那么就不用转换 也查不出来值 一般常见的隐式转换有3种:
    1、在select语句中,oracle会把字段的数据类型隐式转换为变量的数据类型。
    2、在字符型和数值型的值做比较时,oracle会把字符型的值隐式转换为数值型
    3、在字符型和日期型的数据做比较时,oracle会把字符型转换为日期型 当出现转换不了的时候 就会报错 所以很多报错是在转换失败的情况下产生。