我遇到过一条SQL语句,其中一个条件是comp_cd > to_char('0000000000','9999999999')。
运行select to_char('0000000000','9999999999') from dual,我得到的结果是"0“。
有没有人见过这个?
发布于 2013-02-01 12:30:19
函数TO_CHAR需要一个数字或日期作为它的第一个参数,但是您提供的却是一个字符串('0000000000')。
因此,Oracle首先使用隐式转换将其转换为数字,然后将'0000000000'转换为数字0。
然后,TO_CHAR使用'9999999999'格式模型将0转换回字符串。这将导致字符串:
' 0'最后:
comp_cd > ' 0'将在两个字符串之间进行词法(字母顺序)比较。
https://stackoverflow.com/questions/14639167
复制相似问题