【发布时间】:2021-02-25 21:16:46
【问题描述】:
我有一个fruits 表:
--------------------------------
id | event_date | fruit_type |
--------------------------------
1 | '2017-01-01' | apple |
2 | '2018-01-01' | orange |
3 | '2019-01-01' | pear |
fruit_type 列的类型为 enum,可以采用以下选项:
- 苹果
- 橙色
- 梨
尝试使用CASE 更新fruit_type 列时遇到问题。如果我使用以下UPDATE 语句:
UPDATE fruits
SET fruit_type = CASE WHEN event_date = '2019-01-01' THEN 'apple' END;
我得到错误:
[42804] 错误:列“fruit_type”属于“enum_fruits_fruit_type”类型,但表达式属于文本类型提示:您需要重写或强制转换表达式。
如果我在没有CASE 的情况下执行UPDATE 语句,那么我可以很好地更新该列:
UPDATE fruits
SET fruit_type = 'apple'
WHERE date = '2019-01-01';
我需要在我的UPDATE 语句中使用CASE,但如果该列的类型为enum,我似乎无法使用。有什么办法可以让它工作吗?
【问题讨论】:
标签: sql postgresql