可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18

使用->或->>访问JSON数组元素

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

JSON 数组元素可以通过(从零开始的)索引访问,如下所示

SELECT
  '[1,2,3]'::json->1
create.select(jsonGetElement(json("[1,2,3]"), 1))
      .fetch();

结果如下

+------------------+
| json_get_element |
+------------------+
| 2                |
+------------------+

该 API 的灵感来自 PostgreSQL,因此,有两种访问元素的方式

方言支持

此示例使用 jOOQ

jsonGetElement(json("[1,2,3]"), 1)

翻译成以下特定方言的表达式

Aurora Postgres, CockroachDB, Postgres, YugabyteDB

(CAST('[1,2,3]' AS json)->1)

BigQuery

json_query(
  '[1,2,3]',
  ('$[' || CAST(1 AS string) || ']')
)

ClickHouse

JSONExtractRaw(
  '[1,2,3]',
  (1 + 1)
)

DB2

json_query(
  '[1,2,3]',
  ('$.' || CAST(1 AS varchar(3998)))
)

DuckDB, SQLite

('[1,2,3]'->1)

MariaDB, MySQL

json_extract(
  '[1,2,3]',
  concat(
    '$[',
    CAST(1 AS char),
    ']'
  )
)

Oracle

json_query('[1,2,3]', '$[1]')

Snowflake

get(parse_json('[1,2,3]'), 1)

Trino

json_extract(
  json_parse('[1,2,3]'),
  ('$[' || CAST(1 AS varchar) || ']')
)

ASE, Access, Aurora MySQL, Databricks, Derby, Exasol, Firebird, H2, HSQLDB, Hana, Informix, MemSQL, Redshift, SQLDataWarehouse, SQLServer, Sybase, Teradata, Vertica

/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

引用此页

反馈

您对此页面有任何反馈吗? 我们很乐意听取您的意见!

The jOOQ Logo