SQL> select TO_NUMBER(123.56,'999.9') from dual;
select TO_NUMBER(123.56,'999.9') from dual
*
ERROR at line 1:
ORA-01722: invalid number
SQL> select TO_CHAR(123.56,'999.9') from dual;
TO_CHA
------
123.6
SQL>
我很难理解 Oracle SQL 的细微差别。例如,看看上面的两个查询。
为什么第一个查询失败但第二个查询成功?
根据文档,to_number 的第一个值必须是
因此,Oracle 隐式地将 123.56 转换为字符值。然后问题来了,to_number 的格式与给定的值不匹配。可以看出这一点,因为对于以下两种变体,您会得到相同的错误:
但你不这样做:
将字符转换为数字时,格式规范必须完全匹配,但在将数字转换为字符时,可以使用格式说明符有选择地提取数字。