ORA-00932: 数据类型不一致: 应为 CHAR 得到 NUMBER
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
逻辑
逻辑是,如果订单被取消,那么 return 0 否则 return 欠款价值 - 支付价值
小查询
CASE WHEN d.cancelled = 'TRUE'
THEN '0'
ELSE (to_char(b.owed)) - (to_char(d.paid))
END AS balance,
获取错误
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
00932. 00000 - "inconsistent datatypes: expected %s got %s"
*Cause:
*Action:
Error at Line: 25 Column: 58
这个(to_char(b.owed)) - (to_char(d.paid))
是一个数字,0
是一个字符串。您应该删除 then
子句中的勾号或在 else 子句中添加 to_char:to_char((to_char(b.owed)) - (to_char(d.paid)))
或简单地 (b.owed - d.paid)
试试这个,你的案例应该 return number 或 varchar,现在你的案例 return '0' 作为 varchar,否则作为数字。两者都应该 return 一个 varchar 或两者都应该 return 一个数字。
当两者都return varchar
CASE WHEN d.cancelled = 'TRUE'
THEN '0'
ELSE to_char((to_char(b.owed)) - (to_char(d.paid)))
END AS balance,
或
当两个return个数
CASE WHEN d.cancelled = 'TRUE'
THEN 0
ELSE (to_char(b.owed)) - (to_char(d.paid))
END AS balance,
或
当两个return个数
CASE WHEN d.cancelled = 'TRUE'
THEN 0
ELSE (b.owed - d.paid)
END AS balance,
逻辑
逻辑是,如果订单被取消,那么 return 0 否则 return 欠款价值 - 支付价值
小查询
CASE WHEN d.cancelled = 'TRUE'
THEN '0'
ELSE (to_char(b.owed)) - (to_char(d.paid))
END AS balance,
获取错误
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER 00932. 00000 - "inconsistent datatypes: expected %s got %s" *Cause:
*Action: Error at Line: 25 Column: 58
这个(to_char(b.owed)) - (to_char(d.paid))
是一个数字,0
是一个字符串。您应该删除 then
子句中的勾号或在 else 子句中添加 to_char:to_char((to_char(b.owed)) - (to_char(d.paid)))
或简单地 (b.owed - d.paid)
试试这个,你的案例应该 return number 或 varchar,现在你的案例 return '0' 作为 varchar,否则作为数字。两者都应该 return 一个 varchar 或两者都应该 return 一个数字。
当两者都return varchar
CASE WHEN d.cancelled = 'TRUE'
THEN '0'
ELSE to_char((to_char(b.owed)) - (to_char(d.paid)))
END AS balance,
或
当两个return个数
CASE WHEN d.cancelled = 'TRUE'
THEN 0
ELSE (to_char(b.owed)) - (to_char(d.paid))
END AS balance,
或
当两个return个数
CASE WHEN d.cancelled = 'TRUE'
THEN 0
ELSE (b.owed - d.paid)
END AS balance,