database - 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;
如何摆脱这个错误?
解决方案
从 Oracle 12.2 开始,您可以使用on conversion error
of 子句to_number()
在转换失败时返回默认值。这对您的用例很方便:您可以返回null
转换错误,聚合函数avg()
会很乐意忽略。
select avg(
to_number(
my_column default null on conversion error,
'9999d9999',
'nls_numeric_characters = ''.,'''
)
) my_avg
from my_table;
推荐阅读
- windows - Windows 2012 r2 自定义映像存在 NTP 问题。重新启动时浪费时间
- sql-server - SQL Server 2016 中登录事件中记录的客户端 IP 对于远程连接为 NULL
- python - 虽然功能进入其他同时不起作用
- flutter - 非抽象类“_LoadingScreenState”缺少实现
- dask - 如何在最后一步结合 dask 期货?
- ios - 如何从firebase数据库中检索子数组
- javascript - 使用按钮更改内容
- c# - 我的 Xamarin Forms 界面不显示任何控件或属性
- github-actions - 我如何获得 github 操作运行器令牌
- linux - 如何在从源代码安装的 Linux 上卸载 git