如何解决UNION类型的text和bigint无法匹配
我正在运行一个复杂的存储过程,当我有3个联合但有2个联合却没有错误时,我遇到了错误。如果我删除前两个联合中的任何一个,它将运行正常。如果我将NULL之一设为0,则可以正常运行。错误是“ UNION类型的文本和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会使用{{1 }},但是我们不希望在查询结果中使用此数据类型。
然后,错误消息是type resolution rules for UNION
in PostgreSQL的结果。
使用显式类型的大小写来避免该问题:
unknown
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。