pgsql的jsonb相关处理及样例

目录

1、某个字段中包含目标list中的全部使用@>:

2、某个字段中包含目标list中任意值使用?|:

3、其他操作样例:


1、某个字段中包含目标list中的全部使用@>:

SELECT * FROM "public"."t_a" WHERE a::jsonb @> '["cc", "dd"]' limit 10;

2、某个字段中包含目标list中任意值使用?|:

SELECT count(1) FROM "public"."t_a" WHERE a::jsonb ?| array['cc','dd'] LIMIT 10;

3、其他操作样例:

PostgreSQL 中的 JSONB 数据类型提供了丰富的操作符,用于执行各种操作。以下是一些常用的 JSONB 操作符及其解释和样例:

  1. ->:用于获取 JSONB 对象的子对象或数组的元素。

    • 示例:jsonb_column->'key'
  2. ->>:用于将 JSONB 对象的子对象或数组的元素转换为文本。

    • 示例:jsonb_column->>'key'
  3. #>:用于获取 JSONB 对象的多层嵌套子对象。

    • 示例:jsonb_column#>'{key1, key2}'
  4. #>>:用于获取 JSONB 对象的多层嵌套子对象的值,并将其转换为文本。

    • 示例:jsonb_column#>>'{key1, key2}'
  5. @>:用于检查是否包含指定的 JSONB 对象或数组。

    • 示例:jsonb_column @> '{"key": "value"}'
  6. <@:用于检查是否被指定的 JSONB 对象或数组包含。

    • 示例:jsonb_column <@ '{"key": "value"}'
  7. ?:用于检查是否存在指定的 JSONB 键。

    • 示例:jsonb_column ? 'key'
  8. ?|:用于检查是否存在指定的 JSONB 键中的任意一个。

    • 示例:jsonb_column ?| array['key1', 'key2']
  9. ?&:用于检查是否存在指定的 JSONB 键中的所有键。

    • 示例:jsonb_column ?& array['key1', 'key2']
  10. ||:用于连接两个 JSONB 数组。

    • 示例:jsonb_array1 || jsonb_array2

以上只是一些基本的 JSONB 操作符,实际上还有很多其他操作符和函数可用。你可以参考 PostgreSQL 文档中的 JSON 函数和操作符部分以获取更多详细信息:PostgreSQL: Documentation: 13: Chapter 9. Functions and Operators

在Java中,如果你需要从PostgreSQL数据库获取JSONB(一种存储JSON数据的数据类型)的对象,并将其传递给前端,通常会涉及到JDBC(Java Database Connectivity)连接和JSON处理库如Gson或Jackson。以下是基本步骤: 1. 首先,你需要在数据库查询时获取到包含JSONB数据的结果集。如,假设你有一个名为`your_table`的表,其有一列叫`json_column`存储JSONB数据: ```java String sql = "SELECT json_column FROM your_table"; try (Connection connection = DriverManager.getConnection(yourUrl, yourUsername, yourPassword); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql)) { //... } ``` 2. 使用JDBC ResultSet,你可以通过`getString("json_column")`获取到JSON字符串,因为默认情况下,JSONB会被转换为字符串: ```java if (resultSet.next()) { String jsonString = resultSet.getString("json_column"); //... } ``` 3. 然后,可以使用Gson或Jackson将JSON字符串转换为Java对象。如,如果JSON结构已知,可以使用Gson: ```java Gson gson = new Gson(); YourJsonObject jsonObject = gson.fromJson(jsonString, YourJsonObject.class); //...这里YourJsonObject是你自定义的Java类,对应于JSON对象的结构 ``` 4. 最后,你可以将这个Java对象序列化为JSON并发送给前端: ```java String frontendJson = gson.toJson(jsonObject); // 返回前端,可能通过HTTP响应或者其他方式 response.getWriter().write(frontendJson); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷隐凡二

相识便是缘,开启技术大门

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值