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

PostgreSQL中CASE WHEN语句报错:invalid input syntax for integer: "OK"求助

问题原因与解决方案

嘿,这个报错我太熟悉了,典型的数据类型不匹配问题!

你遇到的ERROR: invalid input syntax for integer: "OK",核心问题出在CASE表达式的返回类型一致性上:

  • 你的THEN分支返回的是字符串类型('OK'、'BAD')
  • 但ELSE分支直接返回了整数类型的status字段

PostgreSQL处理CASE表达式时,会强制所有分支的结果统一为同一种数据类型。这里因为整数类型的优先级比文本高,数据库会自动尝试把字符串'OK'转换成整数——这显然是不可能完成的操作,所以直接抛出了转换失败的错误。

修正方案

只需要把ELSE分支的status转换成文本类型,让所有分支返回一致的类型就可以解决问题。用PostgreSQL的类型转换语法::text就能轻松实现:

SELECT 
  xxxx,
  CASE 
    WHEN status = 11 THEN 'OK' 
    WHEN status = 33 THEN 'BAD' 
    ELSE status::text  -- 将整数status转为文本类型
  END AS status_desc,  -- 建议给这个字段起个清晰的别名
  ……

修改后,CASE表达式的所有结果都是文本类型,数据库无需再做无效的类型转换,查询就能正常执行啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:43:18