Postgres数据类型为整数和布尔值

时间:2016-01-05 06:32:27

标签: sql postgresql postgresql-9.3

我有一个带有字段的sql表(版本9.3 PostgreSQL)(游览字符变化,tourtime int)...我想写一个像case when tour = 'A' then tourtime = 2 when tour = 'B' then tourtime = 3 else 0等的查询。

然而我收到错误

  

CASE类型整数和布尔值无法匹配

为什么会这样?

1 个答案:

答案 0 :(得分:4)

在你的CASE中你有树枝:

SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee)

在前两个中,您有布尔表达式( case when tour = 'A' then tourtime = 2 when tour = 'B' then tourtime = 3 else 0 end (tourtime = 2)),根据列{{1}的值(tourtime = 3)true }。在第三个中,您有一个整数表达式(false)。

当系统尝试推断结果的类型时,它会匹配这三种类型并发现它们是不同的。

因此,您应该拥有所有整数表达式或布尔表达式,具体取决于您想要的结果。