我有一张fruits
桌子:
--------------------------------
id | event_date | fruit_type |
--------------------------------
1 | '2017-01-01' | apple |
2 | '2018-01-01' | orange |
3 | '2019-01-01' | pear |
该fruit_type
列属于类型enum
,可以采用以下选项:
尝试fruit_type
使用CASE
. 如果我使用以下UPDATE
语句:
UPDATE fruits
SET fruit_type = CASE WHEN event_date = '2019-01-01' THEN 'apple' END;
我收到错误:
[42804] 错误:列“fruit_type”的类型为“enum_fruits_fruit_type”,但表达式的类型为文本 提示:您需要重写或转换表达式。
如果我做一个UPDATE
没有的语句CASE
,那么我可以很好地更新该列:
UPDATE fruits
SET fruit_type = 'apple'
WHERE date = '2019-01-01';
我需要CASE
在我的UPDATE
语句中使用,但如果该列的类型为 ,我似乎无法使用enum
。有什么办法可以让它工作吗?
您必须将类型显式转换为枚举类型:
UPDATE fruits
SET fruit_type = CASE WHEN event_date = '2019-01-01' THEN 'apple'::enum_fruits_fruit_type END;
我认为当您直接设置列时,postgresql 会自动为您完成,但涉及条件,它无法完成。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句