列是布尔类型,但表达式是文本类型 提示:您需要重写或强制转换表达式
Posted
技术标签:
【中文标题】列是布尔类型,但表达式是文本类型 提示:您需要重写或强制转换表达式【英文标题】:Column is of type Boolean but expression is of type text Hint: You will need to rewrite or cast the expression 【发布时间】:2016-06-10 20:39:50 【问题描述】:谁能帮我解决这个错误?
Update table
SET
tentative = case src.tentative
WHEN 1 THEN 't' ELSE 'f' END
FROM table
【问题讨论】:
您的具体问题是什么? 我正在尝试更新列。 Tentative 是布尔类型,但在源端它是 varchar。我在投射时遇到了这个问题。 您似乎正在尝试从布尔值转换为字符...您是否打算这样做WHEN 't' THEN 1 ELSE 0 END
?
【参考方案1】:
您的专栏tentative
是BOOLEAN
类型;但是,您正在尝试使用 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;
【讨论】:
't' 和 'f' 是 TRUE 和 FALSE 的有效文字以上是关于列是布尔类型,但表达式是文本类型 提示:您需要重写或强制转换表达式的主要内容,如果未能解决你的问题,请参考以下文章
错误:列是 json 类型,但表达式在 Hibernate 中是不同的字符类型
java 中 一般打印对象不都是需要重写toString()方法吗?
引起:org.postgresql.util.PSQLException:错误:列“imagesync__c”的类型为布尔值,但表达式的类型为字符变化