pg如何查询jsonb类型的字段
时间: 2023-10-14 19:14:43 浏览: 97
PostgreSQL 中可以使用 `->` 或者 `->>` 运算符来查询 JSONB 类型的字段。其中 `->` 返回 JSON 值,`->>` 返回 JSON 值的文本表示。
举个例子,假设有一张名为 `user` 的表,其中有一个 JSONB 类型的字段 `info`,其中保存了用户的信息。如果想要查询 `info` 字段中 `name` 属性为 `"张三"` 的记录,可以使用以下 SQL 语句:
```sql
SELECT * FROM user WHERE info ->> 'name' = '张三';
```
如果想要查询 `info` 字段中 `age` 属性大于等于 `18` 的记录,可以使用以下 SQL 语句:
```sql
SELECT * FROM user WHERE (info ->> 'age')::int >= 18;
```
需要注意的是,如果 JSONB 类型的字段中的值是数组,可以使用 `jsonb_array_elements()` 函数将其展开成多行,然后再进行查询。比如,假设 `info` 字段中的值是一个包含多个电话号码的数组,可以使用以下 SQL 语句将其展开:
```sql
SELECT user.id, phone.value
FROM user, jsonb_array_elements(info -> 'phones') AS phone
WHERE phone.value ->> 'type' = 'mobile';
```
在上面的 SQL 语句中,`jsonb_array_elements(info -> 'phones')` 将 `info` 字段中的 `phones` 属性展开成多行,然后使用 `value ->> 'type'` 来查询其中 `type` 属性值为 `mobile` 的记录。
阅读全文