2016-06-10 137 views
1

任何人都可以帮我解决这个错误吗?列是布尔类型,但表达式是文本类型提示:您需要重写或转换表达式

Update table 
SET 
tentative = case src.tentative 
WHEN 1 THEN 't' ELSE 'f' END 
FROM table 
+1

你有什么具体问题? – Hamms

+0

我在尝试更新一列。暂定是布尔类型,但在源端是varchar。在投射时我遇到了这个问题。 – Ramesh

+0

你似乎试图从一个布尔型转换成一个角色......你是否想要做'当'那么1其他0结束'? – Hamms

回答

3

您的列tentativeBOOLEAN类型;但是,您正尝试使用TEXT类型的值更新它。

所有你需要做的就是使用BOOLEAN在您的更新,像这样:

UPDATE table 
SET tentative = CASE src.tentative WHEN 1 THEN TRUE ELSE FALSE END 
FROM src_table src; 

或者,但也许不太明显,你可以这样做:

UPDATE table 
SET tentative = (src.tentative = 1) 
FROM src_table src; 
+0

't'和'f'是TRUE和FALSE的有效文字 –

相关问题