Integer和JSONB之间的PostgreSQL UNION收到错误:UNION类型integer和jsonb无法匹配

时间:2018-03-21 11:16:16

标签: sql postgresql union-all

我想使用 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)

2 个答案:

答案 0 :(得分:2)

JSON看起来很简单,但在处理类型时却有点复杂。您想要将元素提取为值;然后,您可以转换为整数。因此:

Exception in thread "main" java.lang.NoClassDefFoundError: okhttp3/ConnectionPool | Caused by: java.lang.ClassNotFoundException: okhttp3.ConnectionPool

答案 1 :(得分:1)

->运算符返回JSONB值,而不是整数。您需要使用返回->>的{​​{1}}运算符,然后将其转换为整数:

text