2016-04-25 193 views
0

我試圖運行PostgreSQL中多case語句,但我有多個case語句

ERROR: invalid input syntax for integer: "Blue"

這裏的錯誤是我的語法 - 什麼,我需要做的更新,使這個有效的語法?

Select 
id 
,case 
    when empid = 1 then blue 
    when empid = 2 then green 
    when empid = 3 then red 
    else empid 
end as employeecolor 
From employees 
+1

好了,認識到僞列「employeecolor」需要一個單一類型。你告訴postgres一方面該類型應該是一個整數(因爲在某些情況下你會返回'empid'本身),但另一方面,你說這個類型是一個字符串('red ','藍色'等)。它不能兼而有之。 – jmelesky

+0

@jmelesky - 那就是我所追求的。該列是一個int,但我希望它返回一個字符串值。 –

回答

1

只需添加::text這樣的情況:即

Select 
id 
,case 
when empid = 1 then blue 
when empid = 2 then green 
when empid = 3 then red 
else empid::text 
end as employeecolor 
From employees