程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Postgres - UPDATE with CASE 不适用于 enum 列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决POSTGRes - updatE with CASE 不适用于 enum 列?

开发过程中遇到postgres - updatE with CASE 不适用于 enum 列的问题如何解决?下面主要结合日常开发的经验,给出你关于POSTGRes - updatE with CASE 不适用于 enum 列的解决方法建议,希望对你解决POSTGRes - updatE with CASE 不适用于 enum 列有所启发或帮助;

我有一张 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 county c
LEFT JOIN State s ON s.State = c.State
SET c.State = NULL
WHERE s.State IS NULL  

我认为当你直接设置列时,POSTGResql 会自动为你做,但涉及到条件,它做不到。

大佬总结

以上是大佬教程为你收集整理的Postgres - UPDATE with CASE 不适用于 enum 列全部内容,希望文章能够帮你解决Postgres - UPDATE with CASE 不适用于 enum 列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。