具有变量和静态响应的CASE

时间:2017-01-03 14:54:18

标签: sql informix

我正在尝试形成一个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,

1 个答案:

答案 0 :(得分:1)

我从错误中理解的是' 999000000'和f.frequency是不同的数据类型。

Casting' 999000000'无论你的频率列是什么数据类型都应该做到这一点。

另外(至少在postgres中)' 999000000'不是int因此您可能只想删除引号