我正在尝试形成一个CASE语句,如果符合条件将生成固定响应,或者将响应字段中的值。我得到一个“800:相应的数据类型必须兼容CASE表达式或DECODE函数。”执行查询时出错。根据我的理解,它是在响应类型不匹配时引起的,格式不匹配。但是,f.frequency
的响应是9位整数(如果不是null)(因此f.frequency
的类型是INTEGER)。
这有效:
CASE
WHEN f.frequency is null AND d.appid = 7 THEN '999000000'
ELSE null
END AS frequency,
或者这个
CASE
WHEN f.frequency is not null THEN f.frequency
ELSE null
END AS frequency,
但不是我在
中组合它们的时候CASE
WHEN f.frequency is null AND d.appid = 7 THEN '999000000'
WHEN f.frequency is not null THEN f.frequency
ELSE null
END AS frequency,
或者像这样
CASE
WHEN f.frequency is null AND d.appid = 7 THEN '999000000'
ELSE f.frequency
END AS frequency,
答案 0 :(得分:1)
我从错误中理解的是' 999000000'和f.frequency是不同的数据类型。
Casting' 999000000'无论你的频率列是什么数据类型都应该做到这一点。
另外(至少在postgres中)' 999000000'不是int因此您可能只想删除引号