You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询中如何按条件重命名列值,其余值保留?

SQL按条件重命名列指定值(其余值保留)的问题解决

错误原因

你的列a是ENUM类型,ENUM仅允许使用预定义的枚举值,而你指定的new_value不在该枚举的允许值列表中,导致类型不匹配报错。

解决方案

因为仅需返回查询结果,无需修改原表结构,只需将ENUM类型转换为字符串类型即可绕过枚举值限制:

方法1:在ELSE分支转换类型

select a, b,
  case when a = 'specific value' then 'new_value'
  else a::varchar -- 将ENUM类型转为字符串
  end as c
from x;

方法2:统一转换整个CASE表达式的类型

select a, b,
  (case when a = 'specific value' then 'new_value'
  else a
  end)::varchar as c
from x;

说明

转换为字符串类型后,查询结果的c列不再受ENUM值限制,既能保留原列的其他值,又能将指定值替换为new_value,完全符合你的查询需求且不会修改原数据库的任何数据。

内容的提问来源于stack exchange,提问作者coffee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:15:31