使用->或->>访问JSON数组元素
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
JSON 数组元素可以通过(从零开始的)索引访问,如下所示
SELECT '[1,2,3]'::json->1
create.select(jsonGetElement(json("[1,2,3]"), 1))
.fetch();
结果如下
+------------------+ | json_get_element | +------------------+ | 2 | +------------------+
该 API 的灵感来自 PostgreSQL,因此,有两种访问元素的方式
-
->或使用jsonGetElement()/jsonbGetElement(): 生成org.jooq.JSON或org.jooq.JSONB值 -
->>或使用jsonGetElementAsText()/jsonbGetElementAsText(): 生成java.lang.String值
方言支持
此示例使用 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
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!