首页 > 解决方案 > ORA-01722: 用于 Oracle 11g 的 Fr 区域设置的编号无效

问题描述

我有一个名为 My_View 的视图,其中包含一个具有数字十进制数据的 varchar 列。同时,选择计算平均值时出现错误

ORA-01722: Fr 区域设置的编号无效

这是我尝试但收到错误的 oracle 查询:

select (AVG(MY_COLUMN)) 
from  MY_TABLE;

select TO_NUMBER((AVG(MY_COLUMN)), '90.9999', 'NLS_NUMERIC_CHARACTERS='',.''') 
from  MY_TABLE
GROUP BY MY_COLUMN;

如何摆脱这个错误?

标签: databasestringoracleoracle11gaverage

解决方案


从 Oracle 12.2 开始,您可以使用on conversion errorof 子句to_number()在转换失败时返回默认值。这对您的用例很方便:您可以返回null转换错误,聚合函数avg()会很乐意忽略。

select avg(
    to_number(
        my_column default null on conversion error, 
        '9999d9999', 
        'nls_numeric_characters = ''.,'''
    )
) my_avg
from my_table;

推荐阅读