使用to_number汇总varchar时得到无效数字

问题描述

我有以下查询

select avg(to_number(pst_adm_scr)) from dmereg01.tst_scr

我不断收到错误消息:

ora-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.

该字段最初是具有数字值(分数)的varchar

解决方法

根据您的数据库版本(未指定),您可以使用TO_NUMBER的ON CONVERSION ERROR组件来忽略无效值

SELECT TO_NUMBER('-' DEFAULT null ON CONVERSION ERROR)
from dual;