繁体   English   中英

根据情况更新表格ORA-01722无效的编号

[英]Update table by case ORA-01722 Invalid Number

我试图基于其他两个列的值更新表的列。

由于某种原因,我收到ORA-01722:无效的号码

UPDATE TableT SET 
   Col = (CASE when PER in ('1234','2134','2314','3214') AND TYPE = 4 then '4' 
                     when PER in ('34','104','1004') AND TYPE = 4 then '35' 
                     when PER in ('124','1204','2014') AND TYPE = 4  then '36'
               ELSE 'Missing'  
END);

该语句对ORA-01722失败的唯一方法是,如果Col是数字列。 '4''35''36'可以自动转换为数字。 但是,如果不满足任何一种case ,并且最终对else分支求值,它将返回字符串Missing ,该字符串无法转换为数字。

处理它的一种方法是使用null ,它旨在表示缺少的值:

UPDATE TableT SET 
   Col = (CASE when PER in ('1234','2134','2314','3214') AND TYPE = 4 then 4 
                     when PER in ('34','104','1004') AND TYPE = 4 then 35 
                     when PER in ('124','1204','2014') AND TYPE = 4  then 36
               ELSE NULL  
          END);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM