当前位置: 首页 > 知识库问答 >
问题:

ORA-00932:不一致的数据类型:预期的字符数

麹承
2023-03-14

思维方式

逻辑是,如果订单被取消,则返回0,否则返回欠款-支付价值

小查询

CASE WHEN d.cancelled = 'TRUE' 
     THEN '0' 
     ELSE (to_char(b.owed)) - (to_char(d.paid)) 
     END AS balance,

获取错误

ORA-00932:不一致的数据类型:预期的字符数为00932。00000-“不一致的数据类型:预期的%s得到了%s”*原因:
*操作:第25行错误列:58

共有2个答案

尉迟正奇
2023-03-14

这将是一个数字,而0是一个字符串。您应该删除然后子句中的勾号,或者删除else子句中的ad a to_char:to_char((to_char(b.owe))-(to_char(d.paid))或者干脆(b.owe-d.paid)

羊新翰
2023-03-14

试试这个,您的案例应该返回number或varchar,现在您的案例返回“0”作为varchar,否则返回number。两者都应返回varchar或都应返回数字。

当两者都返回varchar时

CASE WHEN d.cancelled = 'TRUE' 
     THEN '0' 
     ELSE to_char((to_char(b.owed)) - (to_char(d.paid)))
     END AS balance,

当两者都返回号码时

CASE WHEN d.cancelled = 'TRUE' 
         THEN 0 
         ELSE (to_char(b.owed)) - (to_char(d.paid))
         END AS balance,

当两者都返回号码时

CASE WHEN d.cancelled = 'TRUE' 
         THEN 0 
         ELSE (b.owed - d.paid)
         END AS balance,
 类似资料: