1

我想使用 to_number 函数将 varchar 列转换为数字,但是我在理解 Oracle 尝试执行我的 SQL 的顺序时遇到了一些麻烦。

声明如下所示;

select * from table where column is not null and to_number(column, '999.9') > 20

当 Oracle 执行此操作时,它会抛出一个无效数字异常。我知道 Oracle 使用某种关系代数公式优化了 SQL 语句,但是有人可以告诉我如何安全地使用 to_number 运算符来实现我的目标吗?

4

1 回答 1

3

有人可以告诉我如何安全地使用 to_number 运算符来实现我的目标吗?

不幸的是,您必须先以某种方式过滤掉具有非数字数据的行,然后再申请to_number。转换函数本身是“不安全的”,如果你愿意,它将在单个无效输入上使整个查询崩溃。

于 2013-07-19T07:15:53.973 回答