按大小写更新 table ORA-01722 无效数字
Update table by case ORA-01722 Invalid Number
我正在尝试根据其他两列的值更新 table 的列。
出于某种原因,我收到 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
中的 none 条件得到满足,而你最终评估 else
分支,它将 return 无法转换的字符串 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);
我正在尝试根据其他两列的值更新 table 的列。
出于某种原因,我收到 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
中的 none 条件得到满足,而你最终评估 else
分支,它将 return 无法转换的字符串 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);