我有一个sql表(9.3postgresql版本),其中有字段(tour character variance,tourtime int)。。。我想写一个查询,比如case when tour = 'A' then tourtime = 2 when tour = 'B' then tourtime = 3 else 0等等。。
但是我犯了错误
整型和布尔型大小写类型不能匹配
这是为什么?

最佳答案

在你的情况下,你有树枝:

 case when tour = 'A'
        then tourtime = 2
      when tour = 'B'
        then tourtime = 3
      else 0
 end

在前两个表达式中,有布尔表达式((tourtime = 2)(tourtime = 3)),根据列true的值,它们是falsetourtime。在第三个表达式中,有一个整数表达式(0)。
当系统试图推断结果的类型时,它匹配这三种类型,并发现它们是不同的。
因此,您应该拥有所有整数表达式或布尔表达式,这取决于您希望得到的结果。

09-27 18:26