获取错误ORA-00932: inconsistent datatypes: expected CHAR got NUMBER 00932. 00000 - "inconsistent datatypes: expected %s got %s"
当我运行以下查询时
SELECT distinct
CASE when t.cancelled = 'TRUE' then '0'
else t.amount END AMOUNT,
FROM table t
如果我用一个数字或文本作为else输出来运行它,就像这样,它可以工作。
SELECT distinct
CASE when t.cancelled = 'TRUE' then '0'
else 'xxx' END AMOUNT,
FROM table t
5条答案
按热度按时间lstz6jyr1#
使用
0
而不是'0'
。金额是一个数字,数字不带引号。0sgqnhkj2#
除了@RADAR的回答
错误的原因是
t.amount
字段是NUMBER
数据类型,而不是string
。您的
CASE
表达式在内部尝试将STRING
放入NUMBER
数据类型中。正如在RADAR的回答中已经建议的那样,使用零作为数字,而不是作为字符串。
mwyxok5s3#
我从这里得到了这个问题的解决方案ORA-00932: inconsistent datatypes: expected CHAR got NUMBER while adding 1 to a date
正如答复所述:
看起来Oracle要求CASE结构的所有THEN表达式的类型与第一个THEN之后的表达式的TYPE一致。不执行类型转换。
这是短和错误的原因.基本上,你提到的第一个THEN部分后的值的数据类型必须是相同的,在所有相同级别的以下THEN.
yb3bgrhw4#
尝试使用
to_number(t.amount)
8tntrjer5#
我无法将字符串值转换为数字,所以我使用TO_CHAR函数将数字转换为字符串。