返回
创建于
状态公开

在 PostgreSQL 中,如果你有一个字段是 JSON 或 JSONB 类型的数组,想要查询这个数组中第一个元素的 id 字段,可以使用 JSON 操作符来提取数据。

假设你的表叫 my_table,字段名叫 data,其内容类似于:

json
1[
2  {"id": 1, "name": "A"},
3  {"id": 2, "name": "B"}
4]

查询 JSON 数组第一个元素的 id

如果 data 是 JSON 类型:

sql
1SELECT (data->0->>'id')::int AS first_id
2FROM my_table;

如果 data 是 JSONB 类型(推荐):

sql
1SELECT (data->0->>'id')::int AS first_id
2FROM my_table;

说明:

  • -> 表示取出 JSON 对象或数组元素(返回 JSON 类型)。
  • ->> 表示取出 JSON 字段对应的文本值(返回文本类型)。
  • data->0 表示取出数组的第一个元素(索引从 0 开始)。
  • ->>'id' 表示从这个 JSON 对象中取出 id 的值(作为文本)。
  • ::int 表示强制转换为整数类型(可选,视你需要而定)。

进阶:带条件查询第一个元素的 id(例如只查某些行)

sql
1SELECT (data->0->>'id')::int AS first_id
2FROM my_table
3WHERE (data->0->>'name') = 'A';