[英]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.