gpt4 book ai didi

postgresql - UNION 类型 text 和 bigint 无法匹配

转载 作者:行者123 更新时间:2023-12-04 12:11:31 25 4
gpt4 key购买 nike

我正在运行一个复杂的存储过程,当我有 3 个联合时出现错误,但有 2 个联合没有错误。如果我删除前两个工会中的任何一个,它运行良好。如果我将其中一个 NULL 设为 0,则它运行良好。错误是“UNION 类型 text 和 bigint 无法匹配”

```lang-sql
SELECT NULL AS total_time_spent
FROM tbl1
GROUP BY student_id
UNION ALL
SELECT NULL AS total_time_spent
FROM tbl2
GROUP BY student_id
UNION ALL
SELECT sum(cast(("value" ->> 'seconds') AS integer)) AS total_time_spent
FROM tbl3
GROUP BY student_id
```
我已经尝试过对总和结果或总和输入进行各种类型的转换。我从中提取的 json 是 NULL、[] 或类似的东西:
[{"date": "2020-09-17", "seconds": 458}]

最佳答案

根据 SQL 标准,NULL 值存在于每个数据类型中,但缺少显式类型转换,第一个子查询将数据类型解析为 text (早期版本的 PostgreSQL 会在这里使用 unknown,但我们不希望在查询结果中使用这种数据类型)。
错误消息是 type resolution rules for UNION in PostgreSQL 的结果.
使用显式类型大小写来避免这个问题:

SELECT CAST(NULL AS bigint) FROM ...
UNION ...

关于postgresql - UNION 类型 text 和 bigint 无法匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63997315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com