0

我遇到了一条 SQL 语句,其中一个条件是comp_cd > to_char('0000000000','9999999999').

运行select to_char('0000000000','9999999999') from dual我得到结果“0”。

有没有人遇到过这个?

4

1 回答 1

2

该函数TO_CHAR需要一个 NUMBER 或 DATE 作为它的第一个参数,但您提供的是一个字符串 ( '0000000000') 。

因此,Oracle 使用隐式转换先将其转换为 NUMBER;'0000000000'转换为数字0

然后,TO_CHAR使用格式模型转换0回字符串。'9999999999'这应该导致字符串:

'          0'

最后:

comp_cd > '          0'

将在两个字符串之间进行词汇(字母)比较。

于 2013-02-01T04:30:19.030 回答