首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-01722:无效数字-获取此错误

ORA-01722:无效数字-获取此错误
EN

Stack Overflow用户
提问于 2020-11-06 08:20:35
回答 1查看 137关注 0票数 0

我正在尝试在oracle sql developer中执行下面的命令。

代码语言:javascript
复制
select code, case when (code = 'SS') then 1 else to_number(code) end as code_modified 
from pxrptuser.WBS

但是我得到了错误。

代码语言:javascript
复制
ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.

输出应为-

代码语言:javascript
复制
code     code_modified
D0DV-IMS null
gWBS     null
8        8
1        1
SS       1

请帮助我完成实际的查询

EN

回答 1

Stack Overflow用户

发布于 2020-11-06 08:31:42

您的数据中有无法转换为数字的字符串(“SS”除外)。

从Oracle12.2开始,您可以使用on conversion error子句to to_number()为无效值返回null

代码语言:javascript
复制
select code, 
    case 
        when code = 'SS' then 1 
        else to_number(code default null on conversion error) 
    end as code_modified 
from pxrptuser.WBS

在早期版本中,一种替代方法是使用正则表达式。如果您的数字没有小数部分,如您的数据所示,则会更简单:

代码语言:javascript
复制
select code, 
    case 
        when code = 'SS' then 1 
        when not regexp_like(code, '\D') then to_number(code)
    end as code_modified 
from pxrptuser.WBS
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64707166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档