假设我有一个包含两列的表
第一个被称为“temp_status”,它是具有值0、1、2、3、4的整数,另一个被称为“status”,它是枚举类型,具有值“Enum 1”、“Enum 2”、“Enum 3”、“Enum 4”、“Enum 5”,
我想根据“temp_status”列为“status”列赋值。我执行了以下操作,但得到了以下错误:
UPDATE "Table"
SET "status" =
CASE
WHEN "temp_status" = 0 THEN 'Enum1'
WHEN "temp_status" = 1 THEN 'Enum2'
WHEN "temp_status" = 2 THEN 'Enum3'
WHEN "temp_status" = 3 THEN 'Enum4'
WHEN "temp_status" = 4 THEN 'Enum5'
ELSE 'Enum1' -- default value
END
WHERE "temp_status" IN (0, 1, 2, 3, 4);
我得到了这个错误;
ERROR: column "status" is of type "MyEnumName" but expression is of type text
HINT: You will need to rewrite or cast the expression.
枚举值匹配,所以我想知道我需要如何在这里进行类型转换
1条答案
按热度按时间xu3bshqb1#
您只是缺少了对枚举字符串的强制转换,例如。
注意:永远不会达到默认值,因为
temp_status
的值是对已Map到case条件(0、1、2、3、4)中的值的约束。但是,由于您的枚举可以很容易地Map到列
temp_status
,因此您可以通过连接'Enum'
和temp_status
的内容来大大简化更新:演示:
db<>fiddle