2016-01-05 43 views
1

我有一個領域一個SQL表(9.3版本的PostgreSQL)(遊覽字符改變,tourtime INT)......我想寫像case when tour = 'A' then tourtime = 2 when tour = 'B' then tourtime = 3 else 0等查詢..Postgres的數據類型整數和布爾

但是我得到錯誤

CASE類型的整數和布爾不能匹配

這是爲什麼?

+0

將布爾值轉換爲整數? tourtime :: int4 – sibert

回答

4

你的情況,你有樹枝:

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

在前兩個,你有布爾表達式((tourtime = 2)(tourtime = 3)),根據列tourtime的值是truefalse。在第三個中,您有一個整數表達式(0)。

當系統試圖推斷結果的類型時,它匹配三種類型,發現它們是不同的。

所以你應該有所有的整數表達式或布爾表達式,這取決於你想要的結果。

+0

你在你的情況下缺少'END'。 – Elad

+0

哦,我看到了...我現在意識到..非常感謝... – Ang

+0

不客氣! – Renzo