我想使用 UNION ALL 运算符将2个表合并为一个表。 第一个表有几个字段。第二个表将几个字段分组到JSONB字段中。
为了简化问题,我使用这个简单的SQL请求重现了错误(不依赖于表格):
SELECT 10 as price
UNION ALL
SELECT '{"price":2}'::jsonb->'price' as price;
此请求返回以下错误:
ERROR: UNION types integer and jsonb cannot be matched
LINE 3: SELECT '{"price":2}'::jsonb->'price' as price;
如何使用UNION ALL运算符将整数与JSONB interger属性合并?
我想获得以下输出:
price
-------
10
2
(2 rows)
答案 0 :(得分:2)
JSON看起来很简单,但在处理类型时却有点复杂。您想要将元素提取为值;然后,您可以转换为整数。因此:
Exception in thread "main" java.lang.NoClassDefFoundError: okhttp3/ConnectionPool | Caused by: java.lang.ClassNotFoundException: okhttp3.ConnectionPool
答案 1 :(得分:1)
->
运算符返回JSONB值,而不是整数。您需要使用返回->>
的{{1}}运算符,然后将其转换为整数:
text