我在Postgres中写了一个select声明,其中包含如下 case 声明:

,(case when all_loc.country = 'DE' then msc_si.buyer_id else msc_si.buyer_name end) as "purchasing_group_name_buyer_name"  --story
,(case when all_loc.country = 'DE' then msc_si.planner_code else mscp.description end) as "mrp_controller_name"                --story

我得到以下错误.我试着用IS而不是=,没用.如果没有这两条case语句,查询就可以完美运行.

错误:大小写类型字符和数字不能与SQL匹配

推荐答案

case表达式的所有分支都应返回相同的数据类型.实现这一点的一种方法是在需要时显式地强制转换:

,(case when all_loc.country = 'DE' then msc_si.buyer_id::varchar else msc_si.buyer_name end) as "purchasing_group_name_buyer_name"
-- Here -----------------------------------------------^
,(case when all_loc.country = 'DE' then msc_si.planner_code::varchar else mscp.description end) as "mrp_controller_name"
-- And here -----------------------------------------------^

Postgresql相关问答推荐

优化PostgreSQL查询以将用户插入数据库

使用PythonPolar在PostgreSQL中存储

为MCV扩展统计设置统计目标

忽略 split_part 的第 n 个分隔符之后

连接到 PostgreSQL 时没有属性执行错误

如何在 PostgreSQL 的回归测试中测试 TYPE 发送和接收函数

Heroku Rails 4 无法连接到服务器:connection refused

PostgreSQL 中基于时间戳的移动平均线

从左连接更新 Postgres

'active' 标志与否?

在这个 Dockerfile 中创建的 Postgres 用户名/密码在哪里?

Postgresql:在插入列时(或之前)自动小写文本

你如何在postgresql中做mysqldump?

由于外键约束无法删除对象

SQLAlchemy 声明式:定义触发器和索引 (Postgres 9)

为什么是||在 PostgreSQL/Redshift 中用作字符串连接

避免通过 JPA 将null值插入数据库表

postgres regexp_replace 只想允许 a-z 和 A-Z

Postgresql滚动删除旧行?

GRANT SELECT 特权使用一个语句对所有序列